1.
import java.math.BigDecimal;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
public class DateUtil {
/**
* 按照给定的模式格式化日期
* @param date Date
* @param pattern String 格式化模式,如 "yyyy年MM月dd日 E HH:mm:ss.SSS" 将把日期格式化为 "2008年05月20日 星期二 14:21:10.781"
* @return
*/
public static String format(Date date, String pattern){
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
return simpleDateFormat.format(date);
}
/**
* 按照默认格式格式化日期
* @param date Date
* @return String
*/
public static String format(Date date){
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 E HH:mm:ss.SSS");
return simpleDateFormat.format(date);
}
public static String format(Calendar date, String pattern){
if(date == null){
return "0000-00-00 00:00:00";
}
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
return simpleDateFormat.format(date.getTime());
}
/**
* 解析日期文本与format刚好相反
* @param text String
* @param pattern String
* @return Date
*/
public static Date parse(String text, String pattern){
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
ParsePosition pos = new ParsePosition(0);
Date date = simpleDateFormat.parse(text, pos);
if(pos.getIndex() < text.length()){
System.out.println("错误索引信息 : " + pos.getErrorIndex());
}
return date;
}
public static Calendar parse2(String text, String pattern){
Date date = parse(text, pattern);
return dateToCalender(date);
}
public static java.sql.Date parse3(String text, String pattern){
Date date = parse(text, pattern);
return new java.sql.Date(date.getTime());
}
public static Calendar dateToCalender(Date date){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar;
}
/**
* 计算两个日期相差多少天
* @param d1 Date
* @param d2 Date
* @return long
*/
public static long subtract(Date d1, Date d2){
BigDecimal timeQuantum = new BigDecimal(0);
BigDecimal bd1 = new BigDecimal(d1.getTime());
BigDecimal bd2 = new BigDecimal(d2.getTime());
BigDecimal day = new BigDecimal(24L * 60 * 60 * 1000);
timeQuantum = bd1.subtract(bd2).divideToIntegralValue(day);
return timeQuantum.longValue();
}
/**
* 计算两个日期相差多少小时
* @param d1 Date
* @param d2 Date
* @return long
*/
public static long subtractHour(Date d1, Date d2){
BigDecimal timeQuantum = new BigDecimal(0);
BigDecimal bd1 = new BigDecimal(d1.getTime());
BigDecimal bd2 = new BigDecimal(d2.getTime());
BigDecimal hour = new BigDecimal(60L * 60 * 1000);
timeQuantum = bd1.subtract(bd2).divideToIntegralValue(hour);
return timeQuantum.longValue();
}
/**
* 计算两个日期相差多少分钟
* @param d1 Date
* @param d2 Date
* @return long
*/
public static long subtractMinute(Date d1, Date d2){
BigDecimal timeQuantum = new BigDecimal(0);
BigDecimal bd1 = new BigDecimal(d1.getTime());
BigDecimal bd2 = new BigDecimal(d2.getTime());
BigDecimal minute = new BigDecimal(60L * 1000);
timeQuantum = bd1.subtract(bd2).divideToIntegralValue(minute);
return timeQuantum.longValue();
}
/**
* 计算两个日期相差多少秒
* @param d1 Date
* @param d2 Date
* @return long
*/
public static long subtractSecond(Date d1, Date d2){
BigDecimal timeQuantum = new BigDecimal(0);
BigDecimal bd1 = new BigDecimal(d1.getTime());
BigDecimal bd2 = new BigDecimal(d2.getTime());
BigDecimal second = new BigDecimal(1000L);
timeQuantum = bd1.subtract(bd2).divideToIntegralValue(second);
return timeQuantum.longValue();
}
/**
* 解析一个时间间隔
* @param quantum long 用毫秒数表示的时间段
* @return String
*/
public static String parseTimeQuantum(long quantum){
long day = 0L;
long hour = 0;
long minute = 0;
long second = 0;
long millisecond = 0;
long tmp = 0L;
if(quantum < 1000){
millisecond = quantum;
return millisecond + "毫秒";
}
millisecond = quantum%1000L;
second = quantum/1000L;
if(second < 60){
return second + "秒" + millisecond + "毫秒";
}
tmp = second;
second = tmp%60L;
minute = tmp/60L;
if(minute < 60){
return minute + "分钟" + second + "秒" + millisecond + "毫秒";
}
tmp = minute;
minute = tmp % 60L;
hour = tmp / 60L;
if(hour < 24){
return hour + "小时" + minute + "分钟" + second + "秒" + millisecond + "毫秒";
}
tmp = hour;
hour = tmp % 24L;
day = tmp /24L;
return day + "天" + hour + "小时" + minute + "分钟" + second + "秒" + millisecond + "毫秒";
}
public static String getCurrentDateText(){
return format(new Date(), "yyyy年MM月dd日 E HH:mm:ss.SSS");
}
public static boolean isZero(Date date){
return date.getTime() == -62170185600000L;
}
public static int getCurrentYear(){
Calendar c = Calendar.getInstance();
return c.get(Calendar.YEAR);
}
public static int getCurrentMonth(){
Calendar c = Calendar.getInstance();
return c.get(Calendar.MONTH) + 1;
}
public static Date getFirstDayOfCurrentMonth(){
Calendar c = Calendar.getInstance();
c.set(Calendar.DAY_OF_MONTH, 1);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
return c.getTime();
}
public static Date getPreviousMonthBegin(){
Calendar c = Calendar.getInstance();
c.set(Calendar.MONTH, c.get(Calendar.MONTH) - 1);
c.set(Calendar.DAY_OF_MONTH, 1);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
return c.getTime();
}
public static Date getCurrentMonthBegin(){
Calendar c = Calendar.getInstance();
c.set(Calendar.DAY_OF_MONTH, 1);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
return c.getTime();
}
public static XMLGregorianCalendar toXMLCalendar(Date d) throws DatatypeConfigurationException{
GregorianCalendar gc = new GregorianCalendar();
gc.setTime(d);
XMLGregorianCalendar xml = DatatypeFactory.newInstance().newXMLGregorianCalendar();
xml.setYear(gc.get(Calendar.YEAR));
xml.setMonth(gc.get(Calendar.MONTH)+1);
xml.setDay(gc.get(Calendar.DAY_OF_MONTH));
xml.setHour(gc.get(Calendar.HOUR_OF_DAY));
xml.setMinute(gc.get(Calendar.MINUTE));
xml.setSecond(gc.get(Calendar.SECOND));
return xml;
}
public static Date toDate(XMLGregorianCalendar x){
GregorianCalendar gc = x.toGregorianCalendar();
Date date = gc.getTime();
return date;
}
}
2. 测试
public static void main(String args[]){
Date date = DateUtil.parse("2008年05月20日 星期二 14:21:10.781", "yyyy年MM月dd日 E HH:mm:ss.SSS");
System.out.println(DateUtil.format(date, "yyyy年MM月dd日 E HH:mm:ss.SSS"));
System.out.println(parseTimeQuantum(6970797L));
System.out.println(DateUtil.format(getPreviousMonthBegin(), "yyyy年MM月dd日 E HH:mm:ss.SSS"));
System.out.println(DateUtil.format(getCurrentMonthBegin(), "yyyy年MM月dd日 E HH:mm:ss.SSS"));
}
分享到:
相关推荐
自己写的一些关于日期操作的方法
对java中常用的日期时间操作做了总结,全面,用到时候参考很不错
031105_【第11章:Java常用类库】_日期操作类(Date、Calendar)笔记
我经常用这个日期插件,功能非常强,可以选择年月日,操作方便,不同于其他的日期插件没有直接的年份选择
DateUtil日期操作类 自用其中包括很多常用日期操作1.Date --> String2.String --> Date3.获取年龄4.获取两个日期相差的天数5.Dateformat6.获取日期中的某数值。如获取月份7.增加日期中某类型的某数值。如增加...
欧柏泰克:Java常用类库--日期操作类
C++string常用函数,c++文件流操作,C++中的日期和时间
在对日期型数据进行操作时,经常会遇到要获取当前日期,获取当前时间,获取日期的年月日等等操作,下 面我们就来介绍下日期的常用处理函数。
常用电脑操作集成 1.1.1.0 版本 完成日期 2007-9-5 作者 王政东 QQ 290052851 主要功能: 集成电脑常用操作 包括: 屏幕保护 关闭显示器 切换用户 注销 重启 关机 其中 电脑自带 屏保 关闭显示器 需要至少一...
日期格式化、得到n天之后的日期、得到n天之后是周几等
NULL 博文链接:https://wangyispider.iteye.com/blog/1136731
when.py:提供用户友好的函数来帮助用户进行常用的日期和时间操作
常用的java操作代码,获取IP,写cookie,日期转换,去除html代码,时间计算等
详细介绍了Java8日期时间相关的api,列举了一些常用的方法,包含java.time、java.time.temporal、java.time.format包下的类和接口操作
Date对象扩展,包括常用中文日期格式解析、加减操作、日期差、周操作和季操作。具体扩展的方法如下: parseCHS--静态方法。解析常用的中文日期并返回日期对象。 add--日期加减操作。[注:此函数在上传时还存在...
C#时间、字符串、随机数等常用数据类型操作示例C#时间、字符串、随机数等常用数据类型操作示例C#时间、字符串、随机数等常用数据类型操作示例
Java实现添加水印,文件上传,生成略缩图,文件操作,Md5加密码,时间日期操作等java常用的工具类源码(28个合集),可直接用于你的项目设计中,实战中有些代码直接套用就ok,不用动手了,会写代码的不一定是高手,...
oracle表空间常用操作,包括表空间剩余使用大小、名称及大小、物理文件的名称及大小 、回滚段名称及大小 、控制文件 、日志文件 、数据库的创建日期和归档方式 、创建表空间、修改表空间等操作,供大家参考。
常用日期操作:年初,年末,月初,月末,本季度初,本季度末,周初日,周末等封装,扩展。