自写Date工具类
以前写项目的时候总是在使用到了时间的转换的时候才在工具类中添加一个方法,这样很容易导致代码冗余以及转换的方法注释不清晰导致每次使用都要重新看一遍工具类。因此整理出经常使用的一些转换,用作记录,以便以后使用。
此工具类主要用于获取时间戳以及各种时间类型之间的转换。
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工具类的更多相关文章
- 30行自己写并发工具类(Semaphore, CyclicBarrier, CountDownLatch)是什么体验?
30行自己写并发工具类(Semaphore, CyclicBarrier, CountDownLatch)是什么体验? 前言 在本篇文章当中首先给大家介绍三个工具Semaphore, CyclicBa ...
- 写shell工具类,一个常用实例
简述: 当我们常用到某些指令时,我们就需要将这个命令进行封装.封装的设计和扩展,因人而异.但为了每个人都能够了解到这个命令,常需要写出这个类的help. 关键字: 函数.getopts 函数 通过自定 ...
- java中IO写文件工具类
以下是一些依据经常使用java类进行组装的对文件进行操作的类,平时,我更喜欢使用Jodd.io中提供的一些对文件的操作类,里面的方法写的简单易懂. 当中jodd中提供的JavaUtil类中提供的方法足 ...
- date 工具类
package lizikj.bigwheel.common.vo.merchandise.util; import java.text.DateFormat; import java.text.Pa ...
- Date 工具类(包含常用的一些时间方法)
package com.fh.util; import java.sql.Timestamp; import java.text.DateFormat; import java.text.ParseE ...
- C#写日志工具类
代码: using System; using System.Collections.Generic; using System.IO; using System.Linq; using System ...
- 含有多个main方法的jar包的运行方式(适用于用java写的工具类)
如果一个jar中含有多个主程序,而你没有配置默认主程序,或者想要运行指定主程序,则可以通过如下命令执行: Java -cp example03-1.0-SNAPSHOT.jar cn.vicky.ex ...
- JAVA时间Date工具类
package com.common.util; import java.text.DateFormat; import java.text.ParseException; import java.t ...
- less循环写css工具类
//margin-right=================.mr(100); .mr(@n, @i: 1) when (@i =< @n) { .mr-@{i} { margin-right ...
随机推荐
- android视频录制、另一部手机实时观看方案
最近调研android视频录制.另一部手机实时观看,大致有以下几种思路. 1. android手机充当服务器,使用NanoHTTPD充当服务器,另一部手机或者pc通过输入http://手机的ip:80 ...
- 跨服务器的sql使用
由于想从别的服务器上的数据库导入一些数据过来 经网上查阅,得到 select * from openrowset( 'SQLOLEDB', '服务器名字'; '用户名'; '密码',数据库名字.dbo ...
- C#中操作刚导出的Excel,设置其为自动调整列宽
[问题] 用C#导出数据为excel,但是导出的数据中,不是自动调整列宽的: 希望变成这样的: [解决过程] 1.参考: 在C#里对excel文件的列宽进行操作 去试试: //auto adjust ...
- 深入浅出SlidingMenu
如果想直接查看源码的话可以从我的Github上下载查看:https://github.com/zhanghuijun0/demo-for-android/tree/master/SlidingMenu ...
- 高效批量更新 sql 字段的值(从一个表向另一个表更新)
里给出一种更高效.简洁的做法,批量更新SQL ,一句SQL就可以替代麻烦的循环过程,有MS SQLServer.Oracle.DB2下的写法--关键点:t4和t1是同一个table,primary k ...
- /boot磁盘空间不足,没盘扩展,只好删除旧内核了
[xiejdm@localhost ~]$ uname -r -.el7.x86_64 [xiejdm@localhost ~]$ sudo rpm -qa | grep kernel kernel- ...
- 【Remoting-4】
[服务对象三种激活方式的不同] [1]客户端激活方式 [A]对象的创建,对象方法的执行都是在远程服务端. [B]服务端为每一个客户端创建其专属的对象,为这个客户提供服务,并且保存状态 [C]可以从远程 ...
- HDU 1068 - Girls and Boys
求一个集合最多几个人,其之间任意两人没有暧昧关系. 二分图匹配 最大独立集 = 总点数 - 最大匹配数 匈牙利算法 因为每个同学都在二分图的两侧 当 A与B匹配时,B与A也匹配 所以 所求的最大匹配数 ...
- vb的property 和event
Event 语句 定义用户自定义的事件. 语法 [Public] Event procedurename [(arglist)] Event 语句包含下面部分: 部分 描述 Public 可选的.指定 ...
- 我用爬虫一天时间“偷了”知乎一百万用户,只为证明PHP是世界上最好的语言
我用爬虫一天时间“偷了”知乎一百万用户,只为证明PHP是世界上最好的语言 2015-08-06 猿圈 我用爬虫一天时间“偷了”知乎一百万用户 只为证明PHP是世界上最好的语言 看了不少朋友圈里推荐的P ...