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"));
}
分享到:
相关推荐
通过提供的`MyDate`文件,你可以看到作者实现的一些自定义日期操作方法,可能包括对上述功能的扩展或优化,具体实现需要查看源代码才能得知。这为我们提供了一个学习和借鉴的实例,帮助我们在实际项目中更灵活地处理...
本文将重点讲解Java日期的常用操作方法,主要基于提供的`JavaDateUtil.java`文件,假设这是一个自定义的日期工具类。 首先,我们来了解`java.util.Date`。这个类在早期的Java版本中被广泛使用,但它的API设计并不...
#### 二、常用日期操作 1. **获取当前系统日期:** - `SELECT SYSDATE FROM DUAL;` 这条语句用于获取当前系统的时间戳,返回的是一个包含日期和时间的数据。 2. **插入带日期值的记录:** - `INSERT INTO KԱ¼...
标题中提到的“常用的jQuery日期插件”,可能是指jQuery UI中的Datepicker插件,它是一款功能强大且用户友好的日期选择工具。Datepicker插件允许用户轻松地选择日期,提供了多种配置选项,可以根据项目需求进行定制...
欧柏泰克:Java常用类库--日期操作类 在 Java 语言中,日期操作类是非常重要的一部分,常用的日期操作类有 Date 类、Calendar 类和 DateFormat 类。下面是对这三个类的详细介绍: Date 类 Date 类是 Java 语言中...
在C#编程中,日期和时间操作是常见的需求,用于处理和展示各种日期时间相关的数据。DateTime类是C#中处理日期和时间的核心类,它提供了丰富的功能来获取、设置和格式化日期时间。以下是对C#中常用日期时间函数的详细...
Oracle 时间日期操作是 Oracle 数据库中的一种常用的操作类型,它可以对数据库中的日期和时间进行各种处理和计算。以下是 Oracle 时间日期操作的一些常见知识点: 1. 获取当前日期和时间:使用 `sysdate` 函数可以...
在给定的标题“Java常用日期辅助类”中,我们可以推测这篇博文可能探讨了Java中的一些核心日期处理工具,如`java.util.Date`,`java.time`包中的类,以及自定义的日期助手类`DateHelper.java`。 `java.util.Date`是...
Mysql常用操作语句 Mysql是当前最流行的开源关系型数据库管理系统之一,对于 PHP+Mysql 技术的新手来说,掌握Mysql的基本操作语句是必不可少的。本文将详细介绍Mysql的基本操作语句,包括登录、数据库操作、表操作...
### ORACLE常用日期函数集合详解 #### 一、概述 在Oracle数据库中,日期处理是一项非常重要的功能。本文将详细介绍一些常用的Oracle日期函数及其应用场景,帮助数据库管理员或开发者更好地理解和运用这些函数,以...
本文将详细介绍SQL中日期处理的常用方法,包括获取当前系统时间、日期加减运算、计算日期差、提取日期部分、转换日期格式等功能。 ### 一、获取当前系统时间 在SQL Server中,`GETDATE()`函数用于返回当前的系统...
### PowerBuilder 常用日期时间函数详解 #### 一、概述 PowerBuilder 是一款功能强大的集成开发环境,主要用于创建数据库应用。它提供了丰富的日期时间处理函数,方便开发者进行日期和时间的操作。本文将详细介绍 ...
031105_【第11章:Java常用类库】_日期操作类(Date、Calendar)笔记
DateUtil日期操作类 自用其中包括很多常用日期操作1.Date --> String2.String --> Date3.获取年龄4.获取两个日期相差的天数5.Dateformat6.获取日期中的某数值。如获取月份7.增加日期中某类型的某数值。如增加...
### Java中关于时间日期操作的常用函数 #### 1. 计算某一月份的最大天数 在Java中,可以通过`Calendar`类来获取指定月份的最大天数。这在处理诸如日历显示、日期验证等场景时非常有用。 ```java Calendar time = ...
总之,这款“常用日期选择代码”是一个实用的Web组件,它简化了日期选择过程,提高了订票系统等应用场景的用户体验。无论你是JSP、ASP还是PHP开发者,都可以将这个日期控件集成到你的项目中,以提升应用的易用性和...
在SQL中,日期函数是处理和操作日期及时间的关键工具,它们帮助我们执行各种复杂的日期时间计算,如计算两个日期之间的差异、提取日期中的特定部分等。本文将深入解析SQL中常用的日期函数之一:`DatePart`函数及其...
Ubuntu 常用文件操作命令 Ubuntu 操作系统中,文件操作命令是非常重要的一部分。下面将对 Ubuntu 中常用的文件操作命令进行详细讲解。 1. 权限修改命令:chmod 在 Ubuntu 中,权限修改命令使用 chmod 命令来实现...
JS的内置Date对象虽然提供了基本的功能,但在复杂的日期操作或用户交互中往往显得力不从心。因此,开发者通常会借助第三方库来增强日期处理的能力。这篇博客“常用的日期JS组件”很可能介绍了一些常用的JavaScript...