自写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——生成或者下载的图片在相册中找不到
今天在写程序的时候,遇到了一个问题,就是生成的图片一直都不能在相册中显示出来,而且,就连通过发送Intent过去,都找不到.通过在网上搜索,发现了一个很好的方法. Intent intent = ne ...
- linq读书笔记2-查询内存中的对象
上次我们说到了linq对数组内容的检索,自.net2.0以后,泛型成了很常见的一种应用技术,linq对泛型的检索也提供了完善的支持 如对list类型的支持,范例如下: class Program ...
- Oracle运维服务的四根救命稻草
企业信息化系统建设按生命周期可分为IT规划阶段.IT建设阶段和IT运维阶段,其中,IT运维阶段的时间最长,IT运维管理关乎着IT运维的质量.成本和速度,更关乎着IT系统的安全.连续和可用.大数据云计算 ...
- CALayer CABasicAnimation
CALayer是UIView可以响应事件.一般来说,layer可以有两种用途:一是对view相关属性的设置,包括圆角.阴影.边框等参数:二是实现对view的动画操控. 因此对一个view进行core ...
- C# Cache何时使用及使用方法
Cache 即高速缓存.那么cache是怎么样提高系统性能与运行速度呢?是不是在任何情况下用cache都能提高性能?是不是cache用的越多就越好呢?我在近 期开发的项目中有所体会,写下来当作总结也希 ...
- U - stl 的 优先队列 Ⅰ
Description Given m sequences, each contains n non-negative integer. Now we may select one number fr ...
- Marineking wilyin
A - Marineking wilyin Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Ot ...
- M端页面-绝对定位布局
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name ...
- ZRender源码分析2:Storage(Model层)
回顾 上一篇请移步:zrender源码分析1:总体结构 本篇进行ZRender的MVC结构中的M进行分析 总体理解 上篇说到,Storage负责MVC层中的Model,也就是模型,对于zrender来 ...
- 淘宝api 开发_获取用户信息
string url = "http://gw.api.taobao.com/router/rest"; "; string appsecret = "fdf7 ...