import java.sql.Time;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
public class DateUtils {
public static final int MSEC_PRE_SECOND = 1000;
public static final int MSEC_PRE_MINUTE = MSEC_PRE_SECOND * 60;
public static final int MSEC_PRE_HOUR = MSEC_PRE_MINUTE * 60;
public static final int MSEC_PRE_DAY = MSEC_PRE_HOUR * 24;
public static final String FORMAT_DATETIME = "yyyy-MM-dd HH:mm:ss";
public static final String FORMAT_DATETIME_ZH = "yyyy年MM月dd日 HH时mm分ss秒";
public static final String FORMAT_DATE = "yyyy-MM-dd";
public static final String FORMAT_DATE_ZH = "yyyy年MM月dd日";
public static final String FORMAT_TIME = "HH:mm:ss";
public static final String FORMAT_TIME_ZH = "HH时mm分ss秒";
public static final String FORMAT_DAY = "E";
public static Date getDatetime(String datestr) throws ParseException {
return getDatetime(datestr, FORMAT_DATETIME);
}
/**
* 把日期字符串包装成java.util.Date
*
* @param datestr
* @param format
* @return
* @throws ParseException
*/
public static Date getDatetime(String datestr, String format)
throws ParseException {
SimpleDateFormat formatter = new SimpleDateFormat(format);
return formatter.parse(datestr);
}
public static java.sql.Date getDate(String datestr) throws ParseException {
return getDate(datestr, FORMAT_DATE);
}
/**
* 把日期字符串包装成java.sql.Date
*
* @param datestr
* @param format
* @return
* @throws ParseException
*/
public static java.sql.Date getDate(String datestr, String format)
throws ParseException {
return new java.sql.Date(getDatetime(datestr, format).getTime());
}
public static Time getTime(String datestr) throws ParseException {
return getTime(datestr, FORMAT_TIME);
}
/**
* 把日期字符串包装成java.sql.Time
*
* @param datestr
* @param format
* @return
*/
public static Time getTime(String datestr, String format)
throws ParseException {
return new Time(getDatetime(datestr, format).getTime());
}
public static String formatDatetime(Date... date) {
return formatDate(FORMAT_DATETIME, date);
}
public static String formatDate(Date... date) {
return formatDate(FORMAT_DATE, date);
}
public static String formatTime(Date... date) {
return formatDate(FORMAT_TIME, date);
}
public static String formatDay(Date... date) {
return formatDate(FORMAT_DAY, date);
}
public static String formatDate(String datestr, String srcformat,
String descformat) throws ParseException {
return formatDate(descformat, getDatetime(datestr, srcformat));
}
/**
* 格式化日期时间
*
* @param format
* @param date
* @return
*/
public static String formatDate(String format, Date... date) {
SimpleDateFormat formatter = new SimpleDateFormat(format);
return formatter.format(date.length == 1 ? date[0] : new Date());
}
public static Date nextDate(Date... date) {
return nextDate(1, date);
}
/**
* 计算某个日期相隔几天后的日期
*
* @param interval
* @param date
* @return
*/
public static Date nextDate(int interval, Date... date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date.length == 1 ? date[0] : new Date());
calendar.add(Calendar.DATE, interval);
return new Date(calendar.getTimeInMillis());
}
public static long intervalDays(String datestr, boolean... strict)
throws ParseException {
return intervalDays(strict.length == 1 ? strict[0] : false, getDatetime(datestr));
}
public static long intervalDays(String datestr, String refdatestr,
boolean... strict) throws ParseException {
return intervalDays(datestr, refdatestr, FORMAT_DATETIME, strict);
}
public static long intervalDays(String datestr, String refdatestr,
String format, boolean... strict) throws ParseException {
return intervalDays(strict.length == 1 ? strict[0] : false, getDatetime(datestr, format), getDatetime(refdatestr, format));
}
public static long intervalDays(Date... date) {
return intervalDays(false, date);
}
/**
* 计算某个日期和参考日期之间相隔的天数
*
* @param strict
* 是否严格区分时分秒
* @param date
* @return
*/
public static long intervalDays(boolean strict, Date... date) {
long datetime = date[0].getTime();
long reftime = date.length == 2 ? date[1].getTime() : new Date()
.getTime();
if (strict) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date[0]);
Map<Integer, Integer> values = new HashMap<Integer, Integer>();
values.put(Calendar.HOUR, 0);
values.put(Calendar.MINUTE, 0);
values.put(Calendar.SECOND, 0);
values.put(Calendar.MILLISECOND, 0);
calendar = getCalendar(values, calendar);
datetime = calendar.getTimeInMillis();
calendar.setTime(date.length == 2 ? date[1] : new Date());
calendar = getCalendar(values, calendar);
reftime = calendar.getTimeInMillis();
}
return (reftime - datetime) / MSEC_PRE_DAY;
}
public static Date firstDate(String datestr) throws ParseException {
return firstDate(datestr, FORMAT_DATETIME);
}
public static Date firstDate(String datestr, String format)
throws ParseException {
return firstDate(getDatetime(datestr, format));
}
/**
* 获取某个月的第一天
*
* @param date
* @return
*/
public static Date firstDate(Date... date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date.length == 1 ? date[0] : new Date());
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
return new Date(calendar.getTimeInMillis());
}
public static Date lastDate(String datestr) throws ParseException {
return lastDate(datestr, FORMAT_DATETIME);
}
public static Date lastDate(String datestr, String format)
throws ParseException {
return lastDate(getDatetime(datestr, format));
}
/**
* 获取某个月的最后一天
*
* @param date
* @return
*/
public static Date lastDate(Date... date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date.length == 1 ? date[0] : new Date());
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
return new Date(calendar.getTimeInMillis());
}
public static int getDays(String datestr) throws ParseException {
return getDays(datestr, FORMAT_DATETIME);
}
public static int getDays(String datestr, String format)
throws ParseException {
return getDays(getDatetime(datestr, format));
}
/**
* 获取某个月的天数
*
* @param date
* @return
*/
public static int getDays(Date... date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date.length == 1 ? date[0] : new Date());
return calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
}
/**
* 设置java.util.Calendar
*
* @param values
* @param calendar
* @return
*/
public static Calendar getCalendar(Map<Integer, Integer> values,
Calendar... calendar) {
Calendar cal = calendar.length == 1 ? calendar[0] : Calendar.getInstance();
for (Integer key : values.keySet()) {
cal.set(key, values.get(key));
}
return cal;
}
/**
* 剩余天时分秒
*
* @param date
* @return
*/
public static Map<Integer, Integer> leftTime(Date... date) {
Date datetime = date[0];
Date reftime = date.length == 2 ? date[1] : new Date();
long msec = reftime.getTime() - datetime.getTime();
long days = msec / MSEC_PRE_DAY;
long hours = msec % MSEC_PRE_DAY / MSEC_PRE_HOUR;
long minutes = msec % MSEC_PRE_DAY % MSEC_PRE_HOUR / MSEC_PRE_MINUTE;
long seconds = msec % MSEC_PRE_DAY % MSEC_PRE_HOUR % MSEC_PRE_MINUTE / MSEC_PRE_SECOND;
Map<Integer, Integer> values = new HashMap<Integer, Integer>();
values.put(Calendar.DAY_OF_MONTH, (int) days);
values.put(Calendar.HOUR, (int) hours);
values.put(Calendar.MINUTE, (int) minutes);
values.put(Calendar.SECOND, (int) seconds);
return values;
}
}
分享到:
相关推荐
Java中的日期和时间处理是程序开发中常见的任务,涉及到各种日期和时间的计算、格式化以及比较等操作。在Java中,主要使用`java.util.Date`、`java.util.Calendar`和`java.text.SimpleDateFormat`这三个核心类来处理...
本文将重点讲解Java日期的常用操作方法,主要基于提供的`JavaDateUtil.java`文件,假设这是一个自定义的日期工具类。 首先,我们来了解`java.util.Date`。这个类在早期的Java版本中被广泛使用,但它的API设计并不...
本文将深入探讨Java中日期格式化的常用方法,主要关注`SimpleDateFormat`和`java.time`包下的`DateTimeFormatter`。 首先,`SimpleDateFormat`是旧版日期时间API的一部分,尽管在Java 8之后被推荐使用新的`java....
本文将基于标题“Java中对日期的常用处理(转)”来深入探讨Java中的日期处理,结合`DateUtil.java`这个文件名,我们可以推测这是一个包含日期处理工具类的源代码文件。 首先,Java中处理日期的最基础类是`java....
这篇博客"常用代码:java日期处理"很可能包含了关于如何在Java中有效地处理日期的实用示例和方法。这里我们将深入探讨Java日期处理的核心概念、API和最佳实践。 1. **Java日期API的发展历程** - Java 1.0引入了`...
本资源"java程序各种常用方法集锦"正是为了解决这些问题而整理的一份综合性的代码库,包含了大量实用的代码示例。下面,我们将详细探讨这些关键知识点。 1. **集合操作**: - `ArrayList`与`LinkedList`:两种最...
通过以上分析可以看出,示例代码涵盖了 Java 日期处理的基本功能,包括日期格式的定义、日期与字符串之间的转换以及对日期进行操作的方法。这些知识点对于开发人员来说是非常实用的,能够帮助他们在实际项目中高效地...
Java中的日期处理涉及到多个类,包括Date、Calendar、GregorianCalendar以及日期格式化类如DateFormat和SimpleDateFormat。这些类主要用于管理、操作和格式化日期和时间。以下是对这些类的详细说明: 1. **Date类**...
在给定的标题“Java常用日期辅助类”中,我们可以推测这篇博文可能探讨了Java中的一些核心日期处理工具,如`java.util.Date`,`java.time`包中的类,以及自定义的日期助手类`DateHelper.java`。 `java.util.Date`是...
在Java中,日期处理是一项常见的任务,涉及到多个类和方法。本篇文章主要总结了Java中关于日期处理的基础知识,包括`java.util.Calendar`,`java.util.GregorianCalendar`以及`java.util.Date`这三个核心类。 首先...
根据给定文件的信息,我们可以总结出以下关于Java中获取各种常用时间的方法的知识点: ### Java获取各种常用时间方法 在Java编程中,处理日期和时间是常见需求之一。本篇文章将详细介绍如何使用Java来获取一些常用...
总的来说,Java处理日期时间的方法包括创建`Calendar`实例、修改日期字段、格式化日期输出、以及使用`SimpleDateFormat`进行日期的解析和展示。理解这些基本概念对于任何Java开发者来说都是至关重要的,特别是在处理...
2014" 专门用于处理springboard定时任务修改cron参数的日期处理方法 12.获取本月第一天(月初时间) 13.获取本月最后一天(月底时间) 以上这些方法都在该Java工具类,当然不仅仅包含这些,还有其他的很多。
JAVA中常用类的常用方法主要涵盖了java语言中基础类库的关键类以及它们提供的主要方法。以下是针对文档内容的详细解释: 1. java.lang.Object类 Object类是Java中所有类的超类,它提供了多种方法,这些方法在Java中...
以上仅是Java常用方法的一小部分,实际开发中还有更多如网络编程、数据库操作、日期时间处理等领域的常用方法。这些方法的理解和熟练运用,将帮助开发者更好地编写高效、稳定的Java程序。通过学习和实践,你可以不断...
根据给定的信息,本文将详细解释Java中时间处理的一些常用方法和技术点,这些技术点主要集中在日期和时间的创建、转换、格式化以及日期之间的计算等方面。 ### 一、使用Calendar进行日期操作 #### 1. 设置特定日期...
### Java李兴华学习笔记之Java常用类库 #### 一、课程介绍及知识点...通过以上内容的学习,学习者不仅可以掌握Java常用类库的基本使用方法,还能进一步提高自己的编程能力,为今后更复杂的项目开发打下坚实的基础。
Java日期处理是编程中常见的需求,尤其是在开发涉及时间计算、日期格式化或事件调度的应用时。在Java中,处理日期和时间主要依赖于`java.util.Date`、`java.util.Calendar`以及自Java 8引入的`java.time`包中的类。...
在Java编程语言中,工具类(Utility Class)是包含各种静态方法的类,这些方法用于执行特定任务,如数据操作、文件处理、数学计算等。它们通常不包含实例变量,只提供静态方法服务,帮助开发者提高代码的复用性和...
实验旨在加深学生对Java预定义类的理解,掌握常用类的运用技巧,以及熟练方法覆盖(重写)的实践。实验分为三个部分,分别围绕Math类、基本类型的包装类、日期类(Date和Calendar)、以及动态数组Vector类展开。 ##...