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

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

 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. 11个有用的移动网页开发App和HTML5框架

    在过去的两年里,触屏设备飞速增长.iOS和Android设备让开发者和设计师开始重新思考他们的网页应用,以提供更好的触屏体验. 移动Web应用相对于本地的App有很多优势,虽然也有很多设计和开发上的挑 ...

  2. android中跨进程通讯的4种方式

    转自:http://blog.csdn.net/lyf_007217/article/details/8542359 帖子写的很好.看来一遍,试了一遍,感觉太有意义.必须转过来! android中跨进 ...

  3. 未找到具有固定名称“System.Data.SQLite”的 ADO.NET 提供程序的实体框架提供程序

    用户代码未处理 System.InvalidOperationException   HResult=-2146233079   Message=未找到具有固定名称"System.Data. ...

  4. asp.net + Jquery 实现类似Gridview功能 (一)

    不知不觉2015年就过去一半了,由于过年前后公司人员陆续离职(这个...),项目忙不过来,从过年来上班就一直在忙,最近项目终于告一段落,开始步入正轨(不用天天赶项目了).所以最近才有时间写这个东西,可 ...

  5. Android studio教程:[5]活动的生命周期

    想要学好安卓开发,就必须理解安卓软件的生命周期,明白一个活动的创建.启动.停止.暂停.重启和销毁的过程,知道各个阶段会调用什么函数进行处理不同的情况,这里我就通过一个简单的例子让大家明白一个活动的生命 ...

  6. 基于实际项目的SQL学习总结

    青云   随笔 - 2, 文章 - 0, 评论 - 1, 引用 - 0 一个项目涉及到的50个Sql语句(整理版) /* 标题:一个项目涉及到的50个Sql语句(整理版) 说明:以下五十个语句都按照测 ...

  7. 11i - 12 How To Set Email Style Preference For All Users At Once?

    (文档 ID 578574.1) In this Document   Goal   Solution   Workflow Information Center, Diagnostics, & ...

  8. 由WSDL文件生成WEB service server端C#程序(转)

    一般一个已经实现功能的WEB Server会发布自己的WSDL文件,供客户端生成代理类. 但有时是先有的server与client交互的接口定义(WSDL)文件,然后由server和client端分别 ...

  9. 2015.4.16-C#中ref和out的区别

    如图: 输出结果是: 上面显示的是 ref 只是地址传递,所以最初改变的也只是地址,但是如果 在给其赋值,值会随之改变;如果 在方法内直接赋值,那么输出的结果 就是现在的值,之后           ...

  10. JAVA中List与Array之间互换

    1.Array转List ArrayList<String> list = new ArrayList<String>(); String[] arr = new String ...