GregorianCalendar 当地时间以及日期时间函数

1.时期格式化

public static final String dateTimeFormat = new String("yyyy-MM-dd HH:mm:ss");

public static String getDateString(Date date, String formatString) {
try {
return (date != null) ? new SimpleDateFormat(formatString).format(date) : "";
} catch (Throwable e) {
e.printStackTrace();
return null;
}
}

2.GregorianCalendar

     GregorianCalendar 是 Calendar 的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统。

  GregorianCalendar 是一种混合日历,在单一间断性的支持下同时支持儒略历和格里高利历系统,在默认情况下,它对应格里高利日历创立时的格里高利历日期(某些国家/地区是在 1582 年 10 月 15 日创立,在其他国家/地区要晚一些)。详细内容查看JDK

  2.1 获取给定日期当日的00:00:00时间戳,即去除日期中含有的时间数据

public static Date getDateIgnoreTime(Date date) {
GregorianCalendar gday = new GregorianCalendar();
gday.setTime(date);
gday.set(Calendar.HOUR, 0);
gday.set(Calendar.HOUR_OF_DAY, 0);
gday.set(Calendar.MINUTE, 0);
gday.set(Calendar.SECOND, 0);
gday.set(Calendar.MILLISECOND, 0);
return gday.getTime();
}

  2.2 根据天数偏移量计算日期

public static Date getDateAfter(Date date, int days) {
GregorianCalendar calendar = new GregorianCalendar();
calendar.setTime(date);
calendar.add(GregorianCalendar.DATE, days);
return calendar.getTime();
}

 2.3 计算两个日期间间隔的天数

     public static final long M_PER_DAY = 1000 * 60 * 60 * 24;

     public static Long computeDateInterval(Date startDate, Date endDate) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(startDate);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
long startTime = calendar.getTimeInMillis();


calendar.setTime(endDate);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
long endTime = calendar.getTimeInMillis();


return (endTime - startTime) / M_PER_DAY;

 2.4  校验日期格式是否正确

     public static boolean checkDateValidity(String str, String formatString) {
SimpleDateFormat sdf = new SimpleDateFormat(formatString);
sdf.setLenient(false);
try {
sdf.parse(str);
return true;
} catch (ParseException e) {
return false;
}
}

2.5 校验某日是否在一段日期区间中

  /**
* 校验某日是否在一段日期区间中

* @param CompareDate
*            待比较日期
* @param date1
*            前置日期
* @param date2
*            后置日期
* @return
*/
public static boolean isBetween(Date CompareDate, Date date1, Date date2) {
if (date2.before(date1)) {
Date tmp = date1;
date1 = date2;
date2 = tmp;
}
return !(CompareDate.before(date1) || CompareDate.after(date2));
}

 2.6 日期比较函数

 /**
* 日期比较函数

* @param date1
* @param date2
* @return 比较两个日期的先后, date1>date2返回1, date1==date2返回0, date1<date2返回-1,
*         date1,date2数据错误返回-2 Modification History:
*/
public static int compareDate(Date date1, Date date2) {
if (date1 == null || date2 == null)
return -2;
long temp = java.util.TimeZone.getDefault().getRawOffset();
long result = (date2.getTime() + temp) / M_PER_DAY - (date1.getTime() + temp) / M_PER_DAY;
if (result > 0) {
return -1;
} else if (result < 0) {
return 1;
} else {
return 0;
}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值