以前写项目的时候总是在使用到了时间的转换的时候才在工具类中添加一个方法,这样很容易导致代码冗余以及转换的方法注释不清晰导致每次使用都要重新看一遍工具类。因此整理出经常使用的一些转换,用作记录,以便以后使用。

此工具类主要用于获取时间戳以及各种时间类型之间的转换。

 package com.test;

 import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; public class DateUtil { private static final Log _log = LogFactory.getLog(DateUtil.class); public static void main(String[] args) { //System.out.println(getTimeStamp()); //System.out.println(getDate(24,60,60,000)); System.out.println(getTimeFormat("2016-05-23", "yyyy-MM-dd", "yyyyMMdd")); } /**
* 获取自定义格式的时间字符串
*
* @param String format 例:"yyyy-MM-dd hh:mm:ss:SSS EEE"
* @author panjianghong 2016-8-29
* */
public static String getTimeFormat(String format){ Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat(format);
String time = sdf.format(date); return time;
} /**
* 获取自定义格式的时间字符串
*
* @param String format 例:"yyyy-MM-dd hh:mm:ss:SSS EEE"
* @param Date date
* @author panjianghong 2016-8-29
* */
public static String getTimeFormat(String format,Date date){ SimpleDateFormat sdf = new SimpleDateFormat(format);
String time = sdf.format(date); return time;
} /**
* 不同字符串时间格式间的转化
*
* @param String String time 例:"20140807"
* @param String format 例:"yyyyMMdd"
* @param String newFormat 例:"yyyy-MM-dd"
* @author panjianghong 2016-8-29
* */
public static String getTimeFormat(String time, String format, String newFormat){ long timestamp = getTimeStamp(time, format); SimpleDateFormat sdf = new SimpleDateFormat(newFormat); String timeFormat = sdf.format(getDate(timestamp)); return timeFormat;
} /**
* 根据字符串类型的时间戳获取自定义格式的时间字符串
*
* @param String format
* @param String timestamp
* @author panjianghong 2016-8-29
* */
public static String getTimeFormat(String format,String timestamp){ Date date = getDate(timestamp);
SimpleDateFormat sdf = new SimpleDateFormat(format);
String time = sdf.format(date); return time;
} /**
* 根据长整型类型的时间戳获取自定义格式的时间字符串
*
* @param String format
* @param long timestamp
* @author panjianghong 2016-8-29
* */
public static String getTimeFormat(String format,long timestamp){ Date date = getDate(timestamp);
SimpleDateFormat sdf = new SimpleDateFormat(format);
String time = sdf.format(date); return time;
} /**
* 获取当前时间的时间戳
* @author panjianghong 2016-8-29
* */
public static long getTimeStamp(){ Date date = new Date();
long timestamp = date.getTime(); return timestamp;
} /**
* 获取传递时间参数的时间戳
* @param Date date
* @author panjianghong 2016-8-29
* */
public static long getTimeStamp(Date date){ long timestamp = date.getTime(); return timestamp;
} /**
* 根据时间字符串和时间格式获取时间戳
* @param String String time 例:"20140807"
* @param String format 例:"yyyyMMdd"
* @author panjianghong 2016-8-29
* */
public static long getTimeStamp(String time, String format){ Date date = getDate(time, format); long timestamp = date.getTime(); return timestamp;
} /**
* 根据字符串形式的时间戳获取当前时间
* @param String time
* @return Date date
* @author panjianghong 2016-8-29
* */
public static Date getDate(String timestamp){ Date date;
try {
date = new Date(Long.parseLong(timestamp));
return date;
} catch (NumberFormatException e) {
_log.error("字符串时间戳转换长整型数据失败!");
} return null;
} /**
* 根据长整型形式的时间戳获取当前时间
* @param String time
* @return Date date
* @author panjianghong 2016-8-29
* */
public static Date getDate(long timestamp){
Date date = new Date(timestamp);
return date;
} /**
* 根据时间字符串和时间格式获取时间
* @param String time 例:"20140807"
* @param String format 例:"yyyyMMdd"
* @return Date date
* @author panjianghong 2016-8-29
* */
public static Date getDate(String time, String format){ SimpleDateFormat sdf = new SimpleDateFormat(format);
try {
Date date = sdf.parse(time);
return date;
} catch (ParseException e) {
_log.error("字符串转换时间失败!");
} return null;
} /**
* 获得文字类型的时间 比如:12小时前 33分钟前 10秒前
* 大于1天的格式 yyyy-MM-dd HH:mm:ss
* @param Date date
* @return String
* @author panjianghong 2016-8-29
*/
public static String getTimeText(Date date)
{
long subTime=((new Date().getTime())-date.getTime())/1000;
long sub=0;
sub=subTime/(24*60*60);
if(sub>0) //大于1天
{
return getTimeFormat("yyyy-MM-dd HH:mm:ss",date);
}
sub=subTime%(24*60*60)/(60*60);
if(sub>0)
{
return sub+"小时前";
}
sub=subTime%(24*60*60)%(60*60)/60;
if(sub>0)
{
return sub+"分钟前";
}
sub=subTime%(24*60*60)%(60*60)%60;
return sub+"秒前";
} /**
* 获得文字类型的时间 比如:12小时前 33分钟前 10秒前
* 自定义大于1天的格式
* @param Date date
* @param String format
* @return String
* @author panjianghong 2016-8-29
*/
public static String getTimeText(Date date, String format)
{
long subTime=((new Date().getTime())-date.getTime())/1000;
if(subTime < 0){
_log.error("输入的日期超过当前时间!");
return null;
}
long sub=0;
sub=subTime/(24*60*60);
if(sub>0) //大于1天
{
return getTimeFormat(format,date);
}
sub=subTime%(24*60*60)/(60*60);
if(sub>0)
{
return sub+"小时前";
}
sub=subTime%(24*60*60)%(60*60)/60;
if(sub>0)
{
return sub+"分钟前";
}
sub=subTime%(24*60*60)%(60*60)%60;
return sub+"秒前";
}
}

自写Date工具类的更多相关文章

  1. 30行自己写并发工具类(Semaphore, CyclicBarrier, CountDownLatch)是什么体验?

    30行自己写并发工具类(Semaphore, CyclicBarrier, CountDownLatch)是什么体验? 前言 在本篇文章当中首先给大家介绍三个工具Semaphore, CyclicBa ...

  2. 写shell工具类,一个常用实例

    简述: 当我们常用到某些指令时,我们就需要将这个命令进行封装.封装的设计和扩展,因人而异.但为了每个人都能够了解到这个命令,常需要写出这个类的help. 关键字: 函数.getopts 函数 通过自定 ...

  3. java中IO写文件工具类

    以下是一些依据经常使用java类进行组装的对文件进行操作的类,平时,我更喜欢使用Jodd.io中提供的一些对文件的操作类,里面的方法写的简单易懂. 当中jodd中提供的JavaUtil类中提供的方法足 ...

  4. date 工具类

    package lizikj.bigwheel.common.vo.merchandise.util; import java.text.DateFormat; import java.text.Pa ...

  5. Date 工具类(包含常用的一些时间方法)

    package com.fh.util; import java.sql.Timestamp; import java.text.DateFormat; import java.text.ParseE ...

  6. C#写日志工具类

    代码: using System; using System.Collections.Generic; using System.IO; using System.Linq; using System ...

  7. 含有多个main方法的jar包的运行方式(适用于用java写的工具类)

    如果一个jar中含有多个主程序,而你没有配置默认主程序,或者想要运行指定主程序,则可以通过如下命令执行: Java -cp example03-1.0-SNAPSHOT.jar cn.vicky.ex ...

  8. JAVA时间Date工具类

    package com.common.util; import java.text.DateFormat; import java.text.ParseException; import java.t ...

  9. less循环写css工具类

    //margin-right=================.mr(100); .mr(@n, @i: 1) when (@i =< @n) { .mr-@{i} { margin-right ...

随机推荐

  1. 在SQL中修改数据库名称

    假设SQL Server 2008中有个数据库test,现在要将其改名为zhy步骤:(1) 分离数据库:打开management studio,找到test数据库-->右键-->任务--& ...

  2. 转:C#: static关键字的作用

    tatic意思是静态,可以修饰类.字段.属性.方法 标记为static的就不用创建实例对象调用了,可以通过类名直接点出来 static三种用法: 1.用于变量前,表示每次重新使用该变量所在方法.类或自 ...

  3. JavaScript 原型链的一点想法

    JavaScript借鉴了许多语言的特点:例如语法类Java.函数借鉴Scheme.原型继承借鉴自Self.正则表达式借鉴于Perl.(DC Javascript:语言精粹).      首先,每个J ...

  4. 用canvas绘制一个时钟

    实现一个时钟的绘制和时间的显示 一,首先是页面的搭建html部分以及一点点的css代码,因为css这块用的比较少,所以就没有单独出来: <!DOCTYPE html> <html l ...

  5. (ssh整合web导出excel)在ssh框架中使用poi正确导出具有比较高级固定格式的excel 整体过程,查询导出前后台下载

    (一) 接需求  :   需求相关   (贴图 ) 生成三核对文件 1.新增三核对菜单页面中,增加生成三核对文件功能按钮,弹窗可根据变电站.电压等级查询定值单. 2.定值单信息以表格形式展示,根据选择 ...

  6. Linux命令记录。

    引用:http://www.cnblogs.com/xiaoluo501395377/archive/2013/03/31/2992500.html 首先,需要确定的是知道的是:对于Linux系统来说 ...

  7. php 对数组按某个字段进行排序

    //$arrays 需要排序的数组,$sort_key 需要排序的键名称 function my_sort($arrays,$sort_key,$sort_order=SORT_DESC,$sort_ ...

  8. Leetcode算法刷题:第112题 Path Sum

    Path Sum 题目 给予一个二叉树,和一个值su,寻找是否有一个从根节点到叶节点的和为su,有则返回True,没有为False.比如: 5 / \ 4 8 / / \ 11 13 4 / \ \ ...

  9. 【测试技术】ant中的for循环用法

    有的时候,我们希望ant中也能类似脚本语言一样进行for循环,以实现一些重复性工作.由于ant核心包并未提供此功能,所以需要下载一个扩展包扔到ant的lib目录下去.详细步骤如下: 1.下载核心包:a ...

  10. Azure File SMB3.0文件共享服务(2)

    使用Powershell创建文件共享 Azure的文件存储结构如下所示,最基本的文件存储包含存储账号,文件共享,在文件共享下面你可以建立文件目录,上传文件: 在开始使用Powershell创建文件共享 ...