自写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 ...
随机推荐
- PL/SQL分页查询
create or replace procedure fenye(tabelname in varchar2,currentpage in number,pageSize in number,inW ...
- 使用dbstart 和dbshut 脚本来自动化启动和关闭数据库
使用dbstart 和dbshut 脚本来自动化启动和关闭数据库:1. 登录用户root.2. 编辑你的平台的oratab 文件.打开文件/etc/oratab:文件里数据库条目为以下格式:SID:O ...
- Xcode中插件的安装以及Xcode升级后插件实效的解决方法
插件的安装 下载好插件,直接运行,然后将Xcode关闭,再次打开Xcode会弹出一个提醒框. 这时候选择 Load Bundle 即可,这时候插件就安装到了Xcode上. Xcode所有的插件都安装在 ...
- GoEasy实现web实时推送过程中的自动补发功能
熟悉GoEasy推送的朋友都知道GoEasy推送实现web实时推送并且能够非常准确稳定地将信息推送到客户端.在后台功能中查看接收信息详情时,可有谁注意到有时候在发送记录里有一个红色的R标志?R又代表的 ...
- const参数,const返回值与const函数
在C++程序中,经常用const 来限制对一个对象的操作,例如,将一个变量定义为const 的: const int n=3; 则这个变量的值不能被修改,即不能对变量赋值. const 这个关键字 ...
- commands - `tar`
remove files after pack: tar --remove-files -cf all.tar * compression: -j: bzip2 -z: gzip add file t ...
- 京东UED招聘web前端开发工程师(中/高级)
工作职责: 负责前端界面的构建和各类交互设计与实现: 前端样式和脚本的模块设计及优化: 协同后台开发人员完成项目: 负责新产品开发线前端工作(新产品.垂直站.移动端 .后端系统),可根据个人喜好及特长 ...
- javascript 小计
①if文 if(){} else if(){} else if 中间有空格 ②
- Nginx安装配置PHP(FastCGI)环境的教程
这篇是Nginx安装配置PHP(FastCGI)环境的教程.Nginx不支持对外部程序的直接调用或者解析,所有的外部程序(包括PHP)必须通过FastCGI接口来调用. 一.什么是 FastCGI F ...
- Myeclipse 2014配置SVN详细图解
1.什么是SVN? 管理软件开发过程中的版本控制工具. 2.myeclipse安装SVN插件步骤,以myeclipse 2014为例. (1)下载SVN插件 http://subclipse.tigr ...