package com.siku.util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* 标题:日期工具类
* 描述:
* 作者: sunhouji
* 时间: 2011-12-9 下午04:04:40
* 版本:v1.0
*/
public class DateUtil {
private static final String DAFAULT_DATE_FORMAT = "yyyy-M-d";
private static final String DATE_FORMAT = "yyyy-MM-dd";
/**
* 默认日期类型格试.
*
* @see DAFAULT_DATE_FORMAT
*/
private static SimpleDateFormat dateFormat = new SimpleDateFormat(DAFAULT_DATE_FORMAT);
/**
* 缺省的日期时间格式
*/
private static final String DAFAULT_DATETIME_FORMAT = "yyyy-M-d HH:mm:ss";
/**
* 时间格式
*/
private static String DATETIME_FORMAT = DAFAULT_DATETIME_FORMAT;
private static SimpleDateFormat datetimeFormat = new SimpleDateFormat(DATETIME_FORMAT);
/**
* 缺省的时间格式
*/
private static final String DAFAULT_TIME_FORMAT = "HH:mm:ss";
/**
* 时间格式
*/
private static String TIME_FORMAT = DAFAULT_TIME_FORMAT;
private static SimpleDateFormat timeFormat = new SimpleDateFormat(TIME_FORMAT);
private DateUtil()
{
// 私用构造主法.因为此类是工具类.
}
/**
* 获取格式化实例.
*
* @param pattern
* 如果为空使用DAFAULT_DATE_FORMAT
* @return
*/
public static SimpleDateFormat getFormatInstance(String pattern) {
if (pattern == null || pattern.length() == 0)
{
pattern = DAFAULT_DATE_FORMAT;
}
return new SimpleDateFormat(pattern);
}
/**
* 格式化Calendar
*
* @param calendar
* @return
*/
public static String formatCalendar(Calendar calendar) {
if (calendar == null)
{
return "";
}
return dateFormat.format(calendar.getTime());
}
public static String formatDateTime(Date d) {
if (d == null)
{
return "";
}
return datetimeFormat.format(d);
}
public static String formatDate(Date d) {
if (d == null)
{
return "";
}
return dateFormat.format(d);
}
/**
* 格式化时间
*
* @param calendar
* @return
*/
public static String formatTime(Date d) {
if (d == null)
{
return "";
}
return timeFormat.format(d);
}
/**
* 格式化整数型日期
*
* @param intDate
* @return
*/
public static String formatIntDate(Integer intDate) {
if (intDate == null)
{
return "";
}
Calendar c = newCalendar(intDate);
return formatCalendar(c);
}
/**
* 根据指定格式化来格式日期.
*
* @param date
* 待格式化的日期.
* @param pattern
* 格式化样式或分格,如yyMMddHHmmss
* @return 字符串型日期.
*/
public static String formatDate(Date date, String pattern) {
if (date == null)
{
return "";
}
if (null == pattern || pattern.equals(""))
{
return formatDate(date);
}
SimpleDateFormat simpleDateFormat = null;
try
{
simpleDateFormat = new SimpleDateFormat(pattern);
} catch (Exception e)
{
e.printStackTrace();
return formatDate(date);
}
return simpleDateFormat.format(date);
}
/**
* 取得Integer型的当前日期
*
* @return
*/
public static Integer getIntNow() {
return getIntDate(getNow());
}
/**
* 取得Integer型的当前日期
*
* @return
*/
public static Integer getIntToday() {
return getIntDate(getNow());
}
/**
* 取得Integer型的当前年份
*
* @return
*/
public static Integer getIntYearNow() {
Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
return year;
}
/**
* 取得Integer型的当前月份
*
* @return
*/
public static Integer getIntMonthNow() {
Calendar c = Calendar.getInstance();
int month = c.get(Calendar.MONTH) + 1;
return month;
}
public static String getStringToday() {
return getIntDate(getNow()) + "";
}
/**
* 根据年月日获取整型日期
*
* @param year
* @param month
* @param day
* @return
*/
public static Integer getIntDate(int year, int month, int day) {
return getIntDate(newCalendar(year, month, day));
}
/**
* 某年月的第一天
*
* @param year
* @param month
* @return
*/
public static Integer getFirstDayOfMonth(int year, int month) {
return getIntDate(newCalendar(year, month, 1));
}
/**
* 某年月的第一天
*
* @param year
* @param month
* @return
*/
public static Integer getFirstDayOfThisMonth() {
Integer year = DateUtil.getIntYearNow();
Integer month = DateUtil.getIntMonthNow();
return getIntDate(newCalendar(year, month, 1));
}
/**
* 某年月的第一天
*
* @param date
* @return
* @time:2008-7-4 上午09:58:55
*/
public static Integer getFistDayOfMonth(Date date) {
Integer intDate = getIntDate(date);
int year = intDate / 10000;
int month = intDate % 10000 / 100;
return getIntDate(newCalendar(year, month, 1));
}
/**
* 某年月的最后一天
*
* @param year
* @param month
* @return
*/
public static Integer getLastDayOfMonth(int year, int month) {
return intDateSub(getIntDate(newCalendar(year, month + 1, 1)), 1);
}
/**
* 根据Calendar获取整型年份
*
* @param c
* @return
*/
public static Integer getIntYear(Calendar c) {
int year = c.get(Calendar.YEAR);
return year;
}
/**
* 根据Calendar获取整型日期
*
* @param c
* @return
*/
public static Integer getIntDate(Calendar c) {
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH) + 1;
int day = c.get(Calendar.DAY_OF_MONTH);
return year * 10000 + month * 100 + day;
}
/**
* 根据Date获取整型年份
*
* @param d
* @return
*/
public static Integer getIntYear(Date d) {
if (d == null)
{
return null;
}
Calendar c = Calendar.getInstance();
c.setTime(d);
return getIntYear(c);
}
/**
* 根据Date获取整型日期
*
* @param d
* @return
*/
public static Integer getIntDate(Date d) {
if (d == null)
{
return null;
}
Calendar c = Calendar.getInstance();
c.setTime(d);
return getIntDate(c);
}
/**
* 根据Integer获取Date日期
*
* @param n
* @return
*/
public static Date getDate(Integer n) {
if (n == null)
{
return null;
}
Calendar c = Calendar.getInstance();
c.set(n / 10000, n / 100 % 100 - 1, n % 100);
return c.getTime();
}
public static Date getDate(String date) {
if (date == null || date.length() == 0)
{
return null;
}
try
{
if (date.contains("/"))
{
date = date.replaceAll("/", "-");
}
return getFormatInstance(DATE_FORMAT).parse(date);
} catch (ParseException e)
{
return null;
}
}
/**
* 根据年份Integer获取Date日期
*
* @param year
* @return
*/
public static Date getFirstDayOfYear(Integer year) {
if (year == null)
{
return null;
}
Calendar c = Calendar.getInstance();
c.set(year, 1, 1);
return c.getTime();
}
/**
* 根据年月日生成Calendar
*
* @param year
* @param month
* @param day
* @return
*/
public static Calendar newCalendar(int year, int month, int day) {
Calendar ret = Calendar.getInstance();
if (year < 100)
{
year = 2000 + year;
}
ret.set(year, month - 1, day);
return ret;
}
/**
* 根据整型日期生成Calendar
*
* @param date
* @return
*/
public static Calendar newCalendar(int date) {
int year = date / 10000;
int month = (date % 10000) / 100;
int day = date % 100;
Calendar ret = Calendar.getInstance();
ret.set(year, month - 1, day);
return ret;
}
/**
* 取得Date型的当前日期
*
* @return
*/
public static Date getNow() {
return new Date();
}
/**
* 取得Date型的当前日期
*
* @return
*/
public static Date getToday() {
return DateUtil.getDate(DateUtil.getIntToday());
}
/**
* 整数型日期的加法
*
* @param date
* @param days
* @return
*/
public static Integer intDateAdd(int date, int days) {
int year = date / 10000;
int month = (date % 10000) / 100;
int day = date % 100;
day += days;
return getIntDate(year, month, day);
}
/**
* 整数型日期的减法
*
* @param date
* @param days
* @return
*/
public static Integer intDateSub(int date, int days) {
return intDateAdd(date, -days);
}
/**
* 计算两个整型日期之间的天数
*
* @param startDate
* @param endDate
* @return
*/
public static Integer daysBetweenDate(Integer startDate, Integer endDate) {
if (startDate == null || endDate == null)
{
return null;
}
Calendar c1 = newCalendar(startDate);
Calendar c2 = newCalendar(endDate);
Long lg = (c2.getTimeInMillis() - c1.getTimeInMillis()) / 1000 / 60 / 60 / 24;
return lg.intValue();
}
/**
* 计算两个整型日期之间的天数
*
* @param startDate
* @param endDate
* @return
*/
public static Integer daysBetweenDate(Date startDate, Date endDate) {
if (startDate == null || endDate == null)
{
return null;
}
Long interval = endDate.getTime() - startDate.getTime();
interval = interval / (24 * 60 * 60 * 1000);
return interval.intValue();
}
/**
* 计算两天的秒数
* @param startDate
* @param endDate
* @return
*/
public static Long daysBetweenSecond(Date startDate, Date endDate){
if (startDate == null || endDate == null)
{
return 0l;
}
Long interval = endDate.getTime() - startDate.getTime();
interval = interval / 1000;
return interval;
}
/**
* 取得当前日期.
*
* @return 当前日期,字符串类型.
*/
public static String getStringDate() {
return getStringDate(DateUtil.getNow());
}
/**
* 根据calendar产生字符串型日期
*
* @param d
* @return eg:20080707
*/
public static String getStringDate(Date d) {
if (d == null)
{
return "";
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
return sdf.format(d);
}
public static String getFormatStringDate(Date d) {
if (d == null)
{
return "";
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
return sdf.format(d);
}
/**
* 通过excel时间字符串转化为date
* @param excelStr
* @return
*/
public static Date getDateByExcelStr(String excelStr){
int year = Integer.parseInt(excelStr.split("-")[0]);
int month = Integer.parseInt(excelStr.split("-")[1]);
int day = Integer.parseInt(excelStr.split("-")[2]);
int hour = Integer.parseInt(excelStr.split("-")[3]);
int minute = Integer.parseInt(excelStr.split("-")[4]);
int second = Integer.parseInt(excelStr.split("-")[5]);
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, month-1);
calendar.set(Calendar.DAY_OF_MONTH, day);
calendar.set(Calendar.HOUR_OF_DAY, hour);
calendar.set(Calendar.MINUTE, minute);
calendar.set(Calendar.SECOND, second);
return calendar.getTime();
}
/**
* 判断是否在这两个日期内
* @param startTime
* @param endTime
* @return
*/
public static boolean isDaysBetween(Date startTime,Date endTime){
Date nowTime = new Date();
if(nowTime.before(startTime) || nowTime.after(endTime)){
return false;
}
return true;
}
}
分享到:
相关推荐
"日期处理工具类"通常是指一个自定义的类,它封装了一些常用的方法,例如日期格式化、字符串转换为日期以及对日期进行加减操作。这个类可能是开发者为了提高代码复用性和简化日期处理逻辑而创建的。 首先,让我们...
"UTILS_日期处理工具类_" 提供了一组用嵌入式语言实现的日期处理工具代码,帮助开发者更方便地进行时间相关的操作。下面我们将详细探讨这个工具类包含的主要知识点。 1. **日期和时间基础**: - 在编程中,日期和...
基本涵盖了各种场景的日期处理需要,包括时间类型转换,获取N天前后,月初月末,某段时间按天拆分等功能,欢迎使用。
js 日期处理工具类,实现了日期的转换,日期格式: 30分钟前,16:20,昨天 11:11、11-17 10:10,等格式。
本篇文章将深入探讨Swift中的日期处理工具类,以及如何在实际项目中有效利用它们。 首先,Swift的`Date`类代表一个时间点,通常是一个全球协调时间(UTC)。这个类是不可变的,意味着所有基于`Date`的操作都不会...
java 日期处理工具类
这是JAVA一个日期处理工具,基本想到的方法这都有了!
日期操作工具类,主要实现了日期的常用操作。 * * 在工具类中经常使用到工具类的格式化描述,这个主要是一个日期的操作类,所以日志格式主要使用 SimpleDateFormat的定义格式. * * 格式的意义如下: 日期和...
很实用的安卓开发工具类,开发必备,日期处理工具类,IO流转换工具类,打印日志工具类,屏幕,字符串工具类,Toast工具类,弹框工具类.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
`DateUtil`类通常被设计为一个工具类,用于提供方便、高效和灵活的日期处理功能。这个类集成了多种方法,帮助开发者进行日期格式化、获取当前时间等操作。下面我们将深入探讨`DateUtil`类可能包含的一些核心知识点。...
获取日期中的某数值。如获取月份 增加日期中某类型的某数值。如增加日期 获取精确的日期 判断字符串是否为日期字符串 获取日期字符串的日期风格。失敗返回null。 将日期字符串转化为日期。失败返回null。 ...
2014" 专门用于处理springboard定时任务修改cron参数的日期处理方法 12.获取本月第一天(月初时间) 13.获取本月最后一天(月底时间) 以上这些方法都在该Java工具类,当然不仅仅包含这些,还有其他的很多。
超好用的时间工具类,包括时间各种格式转换,时间字符串互相转,时间增加,时间减去,单独获取日,获取月,获取时间等
本篇文章将介绍一个名为"LunarCalendar"的Java工具类,它专门用于农历日期的处理。 首先,我们来看`LunarCalendar`这个类的基本结构。这个类通常会包含一系列的内部数据结构来表示农历的年、月、日,可能还包括时、...
日期操作工具类,String转Long,String转Date,Date转String,Date转Long,Long转Date,Long转String等
包含"yyyy-MM-dd"、"yyyy-MM-dd HH:mm:ss"、"yyyyMMdd"、"yyyyMMddHHmmss"、"yyyy-MM"、"yyyyMM"等时间格式的转换。 其中: 1.String转Timestamp stringToTimestamp(String dateStr); 2.比较传入时间与当前时间前一...