Java 时间格式工具类

合集下载

Java时间日期处理技巧:日期格式化和时区设置

Java时间日期处理技巧:日期格式化和时区设置

Java时间日期处理技巧:日期格式化和时区设置在Java编程中,日期和时间处理是非常常见的任务。

无论是在开发Web应用程序、处理数据还是进行系统日志记录,都需要对日期和时间进行操作。

本文将介绍一些Java中常用的日期格式化和时区设置的技巧,帮助开发者更好地处理日期和时间。

1. 日期格式化日期格式化是将日期对象转换为特定格式的字符串表示。

Java提供了SimpleDateFormat类来实现日期格式化。

以下是一个简单的例子:```javaimport java.text.SimpleDateFormat;import java.util.Date;public class DateFormatExample {public static void main(String[] args) {Date date = new Date();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String formattedDate = sdf.format(date);System.out.println("Formatted Date: " + formattedDate);}}```在上面的例子中,我们使用了"yyyy-MM-dd HH:mm:ss"作为日期格式化的模式,它将日期格式化为"年-月-日时:分:秒"的形式。

Java的日期格式化模式有很多选项,可以根据需求进行调整。

例如,"yyyy-MM-dd"表示"年-月-日","HH:mm:ss"表示"时:分:秒","EEE"表示星期几等等。

更多的格式化选项可以参考Java官方文档。

2. 时区设置时区是指地球上划分的不同区域,每个时区都有自己的标准时间。

java美式时间格式,日期操作类(DateFormat与SimpleDateFormat)。。。

java美式时间格式,日期操作类(DateFormat与SimpleDateFormat)。。。

java美式时间格式,⽇期操作类(DateFormat与SimpleDateFormat)。

1.DateFormat类此类是⼀个⽇期的格式化类,专门格式化⽇期的操作,因为java.util.Date类本⾝就已经包含了完整的⽇期,所以只需要将些⽇期按照⼀些好的格式格式化⼀下显⽰就好了.观察DateFormat类的定义:此类是定义在java.test包中的。

public abstract class DateFormat extends Format但是定义上可以发现,此类是⼀个抽象类,按照以住的思路,直接使⽤其⼦类实例化即可,但是DateFormat 类本⾝的内部提供了可以直接为其实例化的操作。

得到⽇期的DateFormat对象:public static final DateFormat getDateInstance()得到⽇期时间的DateFormat对象:public static final DateFormat getDateTimeInstance()直接使⽤DateFormat类完成Date类的转换功能:public final String format(Date date)美式⽇期格式12345678910111213import java.text.DateFormat ;import java.util.Date ;public class DateDemo03{public static void main(String args[]){DateFormat df1 =null ;// 声明⼀个DateFormatDateFormat df2 =null ;// 声明⼀个DateFormatdf1 = DateFormat.getDateInstance() ;// 得到⽇期的DateFormat对象df2 = DateFormat.getDateTimeInstance() ;// 得到⽇期时间的DateFormat对象System.out.println("DATE:" + df1.format(new Date())) ;// 按照⽇期格式化System.out.println("DATETIME:" + df2.format(new Date())) ;// 按照⽇期时间格式化}};中式⽇期格式(通过Locale对象指定要显⽰的区域,指定的区域是中国)importjava.text.DateFormat ;importjava.util.Date ;importjava.util.Locale ;publicclassDateDemo04{publicstaticvoidmain(String args[]){DateFormat df1 = null;// 声明⼀个DateFormatDateFormat df2 = null;// 声明⼀个DateFormatdf1 = DateFormat.getDateInstance(DateFormat.YEAR_FIELD,newLocale("zh","CN")) ;// 得到⽇期的DateFormat对象df2 = DateFormat.getDateTimeInstance(DateFormat.YEAR_FIELD,DateFormat.ERA_FIELD,newLocale("zh","CN")) ;// 得到⽇期时间的DateFormat对象System.out.println("DATE:"+ df1.format(newDate())) ;// 按照⽇期格式化System.out.println("DATETIME:"+ df2.format(newDate())) ;// 按照⽇期时间格式化}}; 2.SimpleDateFormat类此类的功能是完成⽇期的显⽰格式化的,例如,在开发中,可以会将⼀种⽇期格式变为另外⼀种⽇期格式,如下所⽰:原始⽇期:2008-10-19 10:11:30.345转换捕⽇期:2008 年 10 ⽉ 19 ⽇ 10 点 11 分 30 秒 345 毫秒但是以上的两个⽇期中⽇期的数字是完全⼀样的,唯⼀不同的是⽇期的显⽰格式不同,所以要想实现这样的转换功能就必须依靠SimpleDateFormat类。

列举java 时间所有格式的方法

列举java 时间所有格式的方法

列举java 时间所有格式的方法
Java中有许多方法可用于格式化日期和时间,以下是一些常用的方法:
1. SimpleDateFormat类:这是Java中最常用的日期和时间格式化类之一。

可以使用此类的构造函数创建一个日期格式,并使用format()方法将日期对象格式化为字符串。

2. Calendar类:Calendar类是Java中用于表示日期和时间的抽象基类。

它提供了许多方法来获取和设置日期和时间的各个部分,包括年份、月份、日期、小时、分钟、秒等。

3. Date类:Date类是Java中表示日期和时间的类之一。

可以使用它的构造函数来创建日期对象,并使用各种方法来获取、设置、比较日期和时间。

4. LocalDateTime类:这是Java 8中引入的一个类,用于表示本地日期和时间。

可以使用它的各种方法来获取、设置、比较日期和时间。

5. ZonedDateTime类:这是Java 8中引入的另一个类,用于表示带有时区信息的日期和时间。

可以使用它的各种方法来获取、设置、比较日期和时间,并将它们转换为其他时区的日期和时间。

6. Instant类:这是Java 8中引入的另一个类,用于表示时间戳(即距离1970年1月1日0点0分0秒的毫秒数)。

可以使用它的各种方法来获取、设置、比较时间戳。

这些是Java中常用的日期和时间格式化方法,希望能对您有所
帮助。

Java格式化日期的三种方式

Java格式化日期的三种方式

Java格式化⽇期的三种⽅式1)借助DateFormat类:public String toString(Date d) {SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);return sdf.format(d);}2)使⽤String.format()⽅法。

String.format()的⽤法类似于C语⾔的printf,C语⾔转JAVA的同学⼀定会喜欢这个⽅式的。

public static String toString(Date d) {String format = “%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS”;return String.format(format, d);}下⾯对格式字符串说明“%1$tY” %表⽰转义,它后⾯的“1$tY”是格式说明,运⾏时会被替换掉,不会作为普通的字符输出。

由于⼀个参数可能会被格式化好多次,“1$”表⽰格式化第⼀个参数,“tY”表⽰格式化时间中的年份字段,那么”%1$tY”输出的值为d的年份,⽐如2014,同理类推:”%1$tm”输出⽉。

具体的格式化说明请参看java.util.Formatter类的javadoc。

3)使⽤Calendar⾃⼰格式化public static String toString(Date d) {Calendar c = Calendar.getInstance();c.setTime(d);int year = c.get(Calendar.YEAR);int month = c.get(Calendar.MONTH) + 1;int dayInMonth = c.get(Calendar.DAY_OF_MONTH);int hour = c.get(Calendar.HOUR_OF_DAY);int minute = c.get(Calendar.MINUTE);int seconds = c.get(Calendar.SECOND);String ret = String.valueOf(year);ret += “-”;ret += month < 10 ? “0″ + month : String.valueOf(month);ret += “-”;ret += dayInMonth < 10 ? “0″ + dayInMonth : String.valueOf(dayInMonth);ret += ” “;ret += hour < 10 ? “0″ + hour : String.valueOf(hour);ret += “:”;ret += minute < 10 ? “0″ + hour : String.valueOf(minute);ret += “:”;ret += seconds < 10 ? “0″ + hour : String.valueOf(seconds);return ret;}代码很简单,不过有点重复造轮⼦的嫌疑。

JAVA常用日历日期时间星期工具类(封装方法非常多)

JAVA常用日历日期时间星期工具类(封装方法非常多)

JAVA常用日历|日期|时间|星期工具类(封装方法非常多)相信大部分程序语言都需要处理日期、日历和时间相关的数据。

本工具类是基于JAVA语言,封装了常用的方法,这些方法来源于各种实际项目,大部分都是会直接用到的。

此工具类不依赖第三方JAR包,可以直接放入您的项目中使用。

方法全是自己手写的,若有不正确之处还请指出。

此工具类会不断更新完善,有需要的就收藏一下吧。

import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Arrays;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;/*** 日历日期工具类* @decription提供常用的获取日期、星期、周数以及转换操作* @author Zebe* @date 2014/11/27* @version 1.0.2*/public class CalendarUtil {private static int WEEKS = 0;private static SimpleDateFormat SDF = new SimpleDateFormat("yyyy-MM-dd");private static SimpleDateFormat SDFT = new SimpleDateFormat("yyyy-MM-dd HH:m m:ss");/*** 获取当前年份* @return String 例如:2014*/public static String getYear() {Calendar cd = Calendar.getInstance();return String.valueOf(cd.get(Calendar.YEAR));}/*** 获取某个日期中的年份* @return String 例如:2014-05-16 返回 2014*/public static String getYearOfDate(String date) {Calendar cd = Calendar.getInstance();try {cd.setTime(SDF.parse(date));} catch (Exception e) {e.printStackTrace();}return String.valueOf(cd.get(Calendar.YEAR));}/*** 获取当前月份* @return String 例如:4*/public static String getMonth() {Calendar cd = Calendar.getInstance();return String.valueOf(cd.get(Calendar.MONTH) + 1);}/*** 获取某个日期中的月份* @return String 例如:2014-05-16 返回 5*/public static String getMonthOfDate(String date) {Calendar cd = Calendar.getInstance();try {cd.setTime(SDF.parse(date));} catch (Exception e) {e.printStackTrace();}return String.valueOf(cd.get(Calendar.MONTH) + 1); }/*** 获取日期中的英文月份缩写* @return String*/public static String getMonthShortEnNameOfDate(String date) { Calendar cd = Calendar.getInstance();String result = "";try {cd.setTime(SDF.parse(date));int month = cd.get(Calendar.MONTH) + 1;switch (month) {case1:result = "JAN";break;result = "FEB";break;case3:result = "MAR";break;case4:result = "APR";break;case5:result = "MAY";break;case6:result = "JUN";break;case7:result = "JUL";break;case8:result = "AUG";break;case9:result = "SEP";break;case10:result = "OCT";break;case11:result = "NOV";break;result = "DEC";break;}} catch (Exception e) {e.printStackTrace();}return result;}/*** 获取当前日期* @return String 例如:23*/public static String getDay() {Calendar cd = Calendar.getInstance();return String.valueOf(cd.get(Calendar.DAY_OF_MONTH)); }/*** 获取某个日期中的日期* @return String 例如:2014-05-16 返回 16*/public static String getDayOfDate(String date) {Calendar cd = Calendar.getInstance();try {cd.setTime(SDF.parse(date));} catch (Exception e) {e.printStackTrace();}return String.valueOf(cd.get(Calendar.DAY_OF_MONTH)); }/*** 获取昨天日期* @return yyyy-MM-dd*/public static String getYesterday() {Calendar cal = Calendar.getInstance();try {cal.setTime(SDF.parse(getToday()));cal.add(Calendar.DAY_OF_YEAR, -1);} catch (Exception e) {e.printStackTrace();}return SDF.format(cal.getTime());}/*** 获取今天日期* @return yyyy-MM-dd*/public static String getToday() {return SDF.format(new Date());}/*** 获取明天日期* @return yyyy-MM-dd*/public static String getTommorow() {Calendar cal = Calendar.getInstance();try {cal.setTime(SDF.parse(getToday()));cal.add(Calendar.DAY_OF_YEAR, +1);} catch (Exception e) {e.printStackTrace();}return SDF.format(cal.getTime());}/*** 获取当前日期和时间* @return yyyy-MM-dd HH:mm:ss*/public static String getDateTime() {return SDFT.format(new Date());}/*** 获得当前日期与本周一相差的天数* @return int*/private static int getMondayPlus() {Calendar cd = Calendar.getInstance();// 获得今天是一周的第几天,星期日是第一天,星期二是第二天......int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK);if (dayOfWeek == 1) {return -6;} else {return2 - dayOfWeek;}}/*** 获得上周星期一的日期* @return yyyy-MM-dd*/public static String getPreMonday() {WEEKS--;int mondayPlus = getMondayPlus();GregorianCalendar currentDate = new GregorianCalendar();currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * WEEKS);Date monday = currentDate.getTime();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");return sdf.format(monday);}/*** 获得本周星期一的日期* @return yyyy-MM-dd*/public static String getMonday() {WEEKS = 0;int mondayPlus = getMondayPlus();GregorianCalendar currentDate = new GregorianCalendar();currentDate.add(GregorianCalendar.DATE, mondayPlus);Date monday = currentDate.getTime();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");return sdf.format(monday);}/*** 获得下周星期一的日期* @return yyyy-MM-dd*/public static String getNextMonday() {WEEKS++;int mondayPlus = getMondayPlus();GregorianCalendar currentDate = new GregorianCalendar();currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * WEEKS);Date monday = currentDate.getTime();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");return sdf.format(monday);}/*** 获取某一年第几周的星期一* @return yyyy-MM-dd*/public static String getMondayOfWeek(int year, int week) {Calendar cal = Calendar.getInstance();cal.setFirstDayOfWeek(Calendar.MONDAY);cal.clear();cal.set(Calendar.YEAR, year);cal.set(Calendar.WEEK_OF_YEAR,week);cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);return SDF.format(cal.getTime());}/*** 获取某一年第几周的星期日* @return yyyy-MM-dd*/public static String getSundayOfWeek(int year, int week) {Calendar cal = Calendar.getInstance();cal.setFirstDayOfWeek(Calendar.MONDAY);cal.clear();cal.set(Calendar.YEAR, year);cal.set(Calendar.WEEK_OF_YEAR,week);cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);return SDF.format(cal.getTime());}/*** 获取指定周星期日的日期* @return yyyy-MM-dd*/public static String getSunday() {int mondayPlus = getMondayPlus();GregorianCalendar currentDate = new GregorianCalendar();currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * WEEKS + 6);Date monday = currentDate.getTime();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");return sdf.format(monday);}/*** 获取当前周是本月的第几周* @return String*/public static int getWeekOfMonth() {Calendar cd = Calendar.getInstance();cd.setFirstDayOfWeek(Calendar.MONDAY);return cd.get(Calendar.WEEK_OF_MONTH);}/*** 获取当前周是本年的第几周* @return String*/public static int getWeekOfYear() {Calendar cd = Calendar.getInstance();cd.setFirstDayOfWeek(Calendar.MONDAY);return cd.get(Calendar.WEEK_OF_YEAR);}/*** 获取本月第一天* @param date* @return yyyy-MM-dd*/public static String getFirstDayOfThisMonth() {String year = getYear();String month = getMonth();if (month.length() == 1) {return year + "-0" + month + "-01";}return year + "-" + month + "-01";}/*** 获取本月最后一天* @param date* @return yyyy-MM-dd*/public static String getLastDayOfThisMonth() {Calendar calendar = Calendar.getInstance();try {calendar.set(calendar.get(Calendar.YEAR), calendar.get(Cal endar.MONTH) + 1, 1);calendar.add(Calendar.DATE, -1);} catch (Exception e) {e.printStackTrace();}return SDF.format(calendar.getTime());}/*** 获取指定年份月份的最后一天(整形参数)* @param month* @return yyyy-MM-dd*/public static String getLastDayOfMonth(int year, int month) {Calendar calendar = Calendar.getInstance();try {calendar.set(year, month, 1);calendar.add(Calendar.DATE, -1);} catch (Exception e) {}return SDF.format(calendar.getTime());}/*** 获取指定年份月份的最后一天(字符串参数)* @param month* @return yyyy-MM-dd*/public static String getLastDayOfMonth(String year, String month) { int y = Integer.parseInt(year);int m = Integer.parseInt(month);return getLastDayOfMonth(y, m);}/*** 获取两个日期之间相差天数* @param fromDay* @param toDay* @return long*/public static long getDaysBetween(String fromDay, String toDay) { long days = 0;try {Date d1 = SDF.parse(fromDay);Date d2 = SDF.parse(toDay);long diff = d2.getTime() - d1.getTime();days = diff / (1000 * 60 * 60 * 24);} catch (Exception e) {}return days;}/*** 按指定格式转换日期对象为字符串* @param date 日期对象* @param format 日期格式,如:yyyy-MM-dd HH:mm:ss* @return String*/public static String convertDateToString(Date date, String format) { SimpleDateFormat mySDF = new SimpleDateFormat(format);String dateStr = mySDF.format(date);return dateStr;}/*** 按指定格式转换字符串为日期对象* @param date 字符串日期* @param format 日期格式,如:yyyy-MM-dd HH:mm:ss* @return String*/public static Date convertStringToDate(String date, String format) { try {SimpleDateFormat mySDF = new SimpleDateFormat(format);Date dateTemp = mySDF.parse(date);return dateTemp;} catch (Exception e) {e.printStackTrace();return null;}}/*** 获取指定分钟前的时间字符串* @param minute 分钟* @return String yyyy-MM-dd HH:mm:ss*/public static String getPastTimeByMinute(int minute) {Date date = new Date(new Date().getTime() - (minute * 60 * 1000));return convertDateToString(date, "yyyy-MM-dd HH:mm:ss");}/*** 获取指定分钟前的时间字符串(自定义格式)* @param minute 分钟* @param format 日期格式,如:yyyy-MM-dd HH:mm:ss* @return String*/public static String getPastTimeByMinute(int minute, String format) { Date date = new Date(new Date().getTime() - (minute * 60 * 1000));return convertDateToString(date, format);}/*** 获取指定天数前的时间字符串* @param day 天数* @return String yyyy-MM-dd HH:mm:ss*/public static String getPastTimeByDay(int day) {Date date = new Date(new Date().getTime() - (day * 24 * 60 * 60 * 10 00));return convertDateToString(date, "yyyy-MM-dd HH:mm:ss");}/*** 获取指定天数前的时间字符串(自定义格式)* @param day 天数* @param format 日期格式,如:yyyy-MM-dd HH:mm:ss* @return String yyyy-MM-dd HH:mm:ss*/public static String getPastTimeByDay(int day, String format) {Date date = new Date(new Date().getTime() - (day * 24 * 60 * 60 * 10 00));return convertDateToString(date, format);}/*** 获取基于某个时间点后多少天后的时间点* @description如:2015-08-01 16:00:05,15天之后的时间点是* @param beginTime 开始时间点 yyyy-MM-dd HH:mm:ss* @param day 天数* @return String yyyy-MM-dd HH:mm:ss*/public static String getFutureTimeByDay(String beginTime, int day) {Date futureDate = new Date();try {Date debinDate = SDFT.parse(beginTime);futureDate = new Date(debinDate.getTime() + (day * 24 * 60 * 60 * 1000));} catch (ParseException e) {// TODO Auto-generated catch blocke.printStackTrace();}return convertDateToString(futureDate, "yyyy-MM-dd HH:mm:ss");}/*** 判断一组日期是否连续* @param dates Date数组* @return boolean*/public static boolean isContinuousDate(Date[] dates) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");long[] datesNew;boolean continuous = false;try {if (dates != null && dates.length >= 2) {// 通过 yyyy-MM-dd 进行格式化并得到一个long类型的日期数组datesNew = new long[dates.length];for (int i=0; i<dates.length; i++) {datesNew[i] = sdf.parse(sdf.format(date s[i])).getTime();}// 对这个数组进行排序Arrays.sort(datesNew);// 遍历新的日期数组,计算两个日期间的时间差(8640 0000为一整天的差距)for (int i=0; i<datesNew.length; i++) {Long tempDate = datesNew[i];if ((i + 1) < datesNew.length) {Long nextDate = datesNew[i + 1];if (Math.abs(tempDate - nextD ate) != 86400000) {return false;}}}return true;}} catch (Exception e) {e.printStackTrace();}return continuous;}/*** 方法测试* @param args* @throws ParseException*/public static void main(String[] args)throws ParseException {System.out.println("获取当前年:" + getYear());System.out.println("获取日期中的年份:" + getYearOfDate("2012-12-08 "));System.out.println("获取当前月:" + getMonth());System.out.println("获取日期中的月份:" + getMonthOfDate("2012-12-08 "));System.out.println("获取当前日:" + getDay());System.out.println("获取日期中的日:" + getDayOfDate("2012-12-08"));System.out.println("获取昨天日期:" + getYesterday());System.out.println("获取今天日期:" + getToday());System.out.println("获取明天日期:" + getTommorow());System.out.println("获取当前日期和时间:" + getDateTime());System.out.println("获得当前日期与本周一相差的天数:" + getMondayPlu s());System.out.println("获得上周星期一的日期:" + getPreMonday());System.out.println("获得上周星期日的日期:" + getSunday());System.out.println("获得本周星期一的日期:" + getMonday());System.out.println("获得本周星期日的日期:" + getSunday());System.out.println("获得下周星期一的日期:" + getNextMonday());System.out.println("获得下周星期日的日期:" + getSunday());System.out.println("获取当前周是本月的第几周:" + getWeekOfMonth());System.out.println("获取当前周是本年的第几周:" + getWeekOfYear());System.out.println("获取本月第一天:" + getFirstDayOfThisMonth());System.out.println("获取本月最后一天:" + getLastDayOfThisMonth());System.out.println("获取指定年份月份最后一天:" + getLastDayOfMonth(2 044, 2) + " <2044年2月>");System.out.println("获取两个日期之间相差天数:" + getDaysBetween("20 14-09-30", "2014-10-02") + " <2014-09-30~2014-12-02>");System.out.println("按指定格式转换日期对象为字符串:" + convertDateT oString(new Date(), "yyyy-MM-dd HH:mm:ss"));System.out.println("按指定格式转换字符串为日期对象:" + convertStrin gToDate("2015-12-12", "yyyy-MM-dd"));System.out.println("获取某一年第几周的星期一:" + getMondayOfWeek(20 14, 51));System.out.println("获取某一年第几周的星期日:" + getSundayOfWeek(20 14, 51));System.out.println("按照 yyy-M-d HH:mm 格式得到当前日期时间:" + con vertDateToString(new Date(), "yyyy-M-d HH:mm"));System.out.println("5分钟前的时间:" + getPastTimeByMinute(5));System.out.println("2天前的此时此刻:" + getPastTimeByDay(2));System.out.println("时间点 2015-08-21 16:00:05,12天之后的时间点是" + getFutureTimeByDay("2015-08-21 16:00:05", 12));// 判断连续日期Date d1 = new SimpleDateFormat("yyyy-MM-dd").parse("2015-11-18 15:5 6:20");Date d2 = new SimpleDateFormat("yyyy-MM-dd").parse("2015-11-19 14:5 3:23");Date d3 = new SimpleDateFormat("yyyy-MM-dd").parse("2015-11-20 14:2 2:20");Date d4 = new SimpleDateFormat("yyyy-MM-dd").parse("2015-11-21 19:5 6:32");Date[] dates = {d1, d2, d3, d4};System.out.println(SDF.format(d1) + "," + SDF.format(d2) + "," + SD F.format(d3) + "," + SDF.format(d4) + " 是连续日期吗?" + isContinuousDate(dates));}}调用更多,写更少!此工具类来源于【最全面的编程语言工具类平台】:。

java中simpledate类的用法

java中simpledate类的用法

java中simpledate类的用法
(原创实用版)
目录
1.Java 中的 SimpleDateFormat 类概述
2.SimpleDateFormat 类的主要方法
3.SimpleDateFormat 类的使用示例
正文
一、Java 中的 SimpleDateFormat 类概述
SimpleDateFormat 类是 Java 中用于处理日期和时间的类,它允许我们将日期和时间格式化为特定的字符串,同时也可以将特定的字符串解析为日期和时间。

SimpleDateFormat 类是 java.text 包中的一个类。

二、SimpleDateFormat 类的主要方法
1.构造方法
SimpleDateFormat 类提供了两个构造方法,分别是:
SimpleDateFormat(String pattern):使用指定的样式创建一个SimpleDateFormat 对象。

SimpleDateFormat(String pattern, Locale):使用指定的样式和地区创建一个 SimpleDateFormat 对象。

2.format() 方法
format() 方法用于将日期时间对象格式化为字符串。

它接受一个Date 对象作为参数,并根据 SimpleDateFormat 对象中指定的样式返回一个格式化后的字符串。

3.parse() 方法
parse() 方法用于将字符串解析为日期时间对象。

它接受一个字符串
作为参数,并根据 SimpleDateFormat 对象中指定的样式返回一个解析后的 Date 对象。

java中simpledate类的用法

java中simpledate类的用法

java中simpledate类的用法简单日期格式化(SimpleDateFormat)是Java编程语言中一个非常重要的类。

它可用于将日期和时间格式化为希望的格式,并将它们转换成字符串。

一、SimpleDateFormat类概述SimpleDateFormat类是java.text包中的一个类,它用于格式化日期和时间。

它继承自DateFormat类,因此可以使用DateFormat类中定义的方法,如format()和parse()方法。

二、SimpleDateFormat类的初始化初始化SimpleDateFormat对象有两种方法:1. 使用一个具体的模式字符串可以通过传递一个包含日期和时间格式的字符串来初始化SimpleDateFormat对象。

例如,以下代码将创建一个SimpleDateFormat对象,并使用"yyyyMMdd"模式字符串进行初始化:SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");2. 使用一个预定义的日期和时间样式SimpleDateFormat类提供了几个预定义的日期和时间样式,可以直接使用这些样式初始化SimpleDateFormat对象。

以下是几个常用的样式:SHORT:使用短日期格式,如"yy/MM/dd"或"yyyy/MM/dd"MEDIUM:使用中等日期格式,如"MMM d, yyyy"LONG:使用长日期格式,如"MMMM d, yyyy"FULL:使用完整日期格式,如"EEEE, MMMM d, yyyy"例如,以下代码将创建一个SimpleDateFormat对象,并使用SHORT样式进行初始化:SimpleDateFormat sdf = DateFormat.getDateInstance(DateFormat.SHORT);三、日期格式化SimpleDateFormat类的最重要的功能之一是将日期和时间格式化为字符串。

简单的时间格式转换工具类(java)

简单的时间格式转换工具类(java)

简单的时间格式转换⼯具类(java)import java.sql.Timestamp;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.Locale;import java.util.TimeZone;/*** Date⽇期公共类***/public class DateUtils {/*** 返回当前⽇期Date类型** @return*/public static Date getCurDate() {return new Date();}/*** Date⽇期类型转化为Timestamp类型如果参数为空返回null** @param date* @return*/public static Timestamp getTimestamp(Date date) {if (date == null)return null;else {return new Timestamp(date.getTime());}}/*** 获取当前Timestamp类型时间** @return*/public static Timestamp getCurTimestamp() {return new Timestamp(new Date().getTime());}/*** 字符串⽇期转化为“yyy-MM-dd”格式的Date⽇期类型如果字符串为null则返回null** @param dateStr* @return*/public static Date formateDate(String dateStr) {if (dateStr == null || "".equals(dateStr.trim()))return null;SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");try {Date date = sdf.parse(dateStr);return date;} catch (ParseException e) {e.printStackTrace();}return null;}/*** 字符串⽇期去除两端空⽩并返回Timestamp类型⽇期如果为null或者“”则返回null** @param tsStr* @return*/public static Timestamp formateTimeStamp(String tsStr) {if (tsStr == null || "".equals(tsStr.trim()))return null;try {Timestamp ts = Timestamp.valueOf(tsStr.trim());return ts;} catch (Exception e) {e.printStackTrace();}return null;}/*** Date⽇期类型转化为“yyyy-MM-dd”格式的字符串⽇期如果为空则返回null** @param date* @return*/public static String getDateStr(Date date) {if (date == null)return null;SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");String dateStr = sdf.format(date);return dateStr;}public static String getTime2Str(Date date){if (date == null)return null;SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");String dateStr = sdf.format(date);return dateStr;}/*** Timestamp⽇期类型转化为“yyyy-MM-dd HH:mm:ss”格式的字符串⽇期如果为空则返回null ** @param ts* @return*/public static String getTimestampStr(Timestamp ts) {if (ts == null)return null;SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String tsStr = sdf.format(ts);return tsStr;}/*** Timestamp⽇期类型转化为“MM-dd HH:mm”格式的字符串⽇期如果为空则返回null** @param ts* @return*/public static String formatTimestamp2Str(Timestamp ts) {if (ts == null)return null;SimpleDateFormat sdf = new SimpleDateFormat("MM-dd HH:mm");String tsStr = sdf.format(ts);return tsStr;}/*** Date⽇期类型转化为“MM-dd HH:mm”格式的字符串⽇期如果为空则返回null** @param ts* @return*/public static String formatTimestamp2Str(Date ts) {if (ts == null)return null;SimpleDateFormat sdf = new SimpleDateFormat("MM-dd HH:mm");String tsStr = sdf.format(ts);return tsStr;}/*** Date⽇期类型转化为“yyyy-MM-dd HH:mm:ss”格式的字符串⽇期如果为空则返回null** @param date* @return*/public static String getTimestampStr(Date date) {if (date == null)return null;SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String tsStr = sdf.format(date);return tsStr;}/*** 返回Date⽇期类型的起始时间,返回类型是Timestamp并包含秒表 2014-01-21 00:00:00.0 ** @param date* @return*/public static Timestamp getStartTimestampByDate(Date date) {if (date == null)return null;Calendar c1 = Calendar.getInstance();c1.setTime(date);c1.set(Calendar.HOUR_OF_DAY, 0);c1.set(Calendar.MINUTE, 0);c1.set(Calendar.SECOND, 0);c1.set(LISECOND, 0);return new Timestamp(c1.getTimeInMillis());}/*** 返回Date⽇期类型的结束时间,返回类型是Timestamp并包含秒表 2014-01-21 23:59:59.999 ** @param date* @return*/public static Timestamp getEndTimestampByDate(Date date) {if (date == null)return null;Calendar c1 = Calendar.getInstance();c1.setTime(date);c1.set(Calendar.HOUR_OF_DAY, 23);c1.set(Calendar.MINUTE, 59);c1.set(Calendar.SECOND, 59);c1.set(LISECOND, 999);return new Timestamp(c1.getTimeInMillis());}/*** ⽇期增加并返回Date⽇期类型** @param curDate* @param count* @return*/public static Date dateAdd(Date curDate, Integer count) {if (curDate == null || count == null)return null;return new Date(curDate.getTime() + count * 24 * 60 * 60 * 1000L);}/*** ⽇期增加并返回Timestamp⽇期类型** @param curTimestamp* @param count* @return*/public static Timestamp timeAddSecond(Timestamp curTimestamp, Integer count) {if (curTimestamp == null || count == null)return null;return new Timestamp(curTimestamp.getTime() + count * 1000);}/*** 两个⽇期相差⼏个⽉** @param curDate* @param oldDate* @return*/public static int dateDiffMont(Date curDate, Date oldDate) {if (curDate == null || oldDate == null)return 0;if (oldDate.getTime() >= curDate.getTime()) {return 0;}Calendar c = Calendar.getInstance();c.setTime(curDate);int curYear = c.get(Calendar.YEAR);int curMonth = c.get(Calendar.MONTH);c.setTime(oldDate);int oldYear = c.get(Calendar.YEAR);int oldMonth = c.get(Calendar.MONTH);int result;if (curYear == oldYear) {result = curMonth - oldMonth;// 两个⽇期相差⼏个⽉,即⽉份差} else {result = 12 * (curYear - oldYear) + curMonth - oldMonth;// 两个⽇期相差⼏个⽉,即⽉份差 }return result;}/*** 判断两个⽇期的⼤⼩是返回true 否则返回false** @param date1* @param date2* @return*/public static boolean compare(Date date1, Date date2) {if (date1 == null || date2 == null)return false;Calendar c1 = Calendar.getInstance();c1.setTime(date1);c1.set(Calendar.HOUR_OF_DAY, 0);c1.set(Calendar.MINUTE, 0);c1.set(Calendar.SECOND, 0);c1.set(LISECOND, 0);Calendar c2 = Calendar.getInstance();c2.setTime(date2);c2.set(Calendar.HOUR_OF_DAY, 0);c2.set(Calendar.MINUTE, 0);c2.set(Calendar.SECOND, 0);c2.set(LISECOND, 0);if (c1.getTimeInMillis() >= c2.getTimeInMillis())return true;elsereturn false;}/*** 返回当前⽇期当前⽉的第⼀天返回类型是Timestamp 格式是“2014-01-01 00:00:00.0”** @param curDate* @return*/public static Timestamp getFirstDayOfMonth(Date curDate) {if (curDate == null)return null;Calendar c = Calendar.getInstance();c.setTime(curDate);c.set(Calendar.HOUR_OF_DAY, 0);c.set(Calendar.MINUTE, 0);c.set(Calendar.SECOND, 0);c.set(LISECOND, 0);c.set(Calendar.DATE, 1);// 设为当前⽉的1号System.out.println(new Timestamp(c.getTimeInMillis()));return new Timestamp(c.getTimeInMillis());}/*** 返回当前⽇期下个⽉的第⼀天返回类型是Timestamp 格式是“2014-02-01 00:00:00.0”** @param curDate* @return*/public static Timestamp getFirstDayOfNextMonth(Date curDate) {if (curDate == null)return null;Calendar c = Calendar.getInstance();c.setTime(curDate);c.set(Calendar.HOUR_OF_DAY, 0);c.set(Calendar.MINUTE, 0);c.set(Calendar.SECOND, 0);c.set(LISECOND, 0);c.set(Calendar.DATE, 1);// 设为当前⽉的1号c.add(Calendar.MONTH, 1);//System.out.println(new Timestamp(c.getTimeInMillis()));return new Timestamp(c.getTimeInMillis());}/*** 返回指定年份的第⼀天返回类型是Timestamp 格式是“2013-01-01 00:00:00.0”** @param yearStr* ("参数格式:2013")* @return*/public static Timestamp getFirstDayOfYear(String yearStr) {if (yearStr == null)return null;Calendar c = Calendar.getInstance();c.set(Calendar.YEAR, new Integer(yearStr));c.set(Calendar.MONTH, 0); //c.set(Calendar.DATE, 1);c.set(Calendar.HOUR_OF_DAY, 0);c.set(Calendar.MINUTE, 0);c.set(Calendar.SECOND, 0);c.set(LISECOND, 0);System.out.println(new Timestamp(c.getTimeInMillis()));return new Timestamp(c.getTimeInMillis());}/*** 返回指定年份的最后⼀天返回类型是Timestamp 格式是“2013-12-31 23:59:59.999” ** @param yearStr* ("参数格式:2013")* @return*/public static Timestamp getLastDayOfYear(String yearStr) {if (yearStr == null)return null;Calendar c = Calendar.getInstance();c.set(Calendar.YEAR, new Integer(yearStr));c.set(Calendar.MONTH, 11); //c.set(Calendar.DATE, 31);c.set(Calendar.HOUR_OF_DAY, 23);c.set(Calendar.MINUTE, 59);c.set(Calendar.SECOND, 59);c.set(LISECOND, 999);System.out.println(new Timestamp(c.getTimeInMillis()));return new Timestamp(c.getTimeInMillis());}/*** 返回本季度的第⼀天返回类型是Timestamp 格式是“2013-10-01 00:00:00.0”** @param yearStr* (例如参数:2013)* @param qurStr* (例如第XX季度:4)* @return*/public static Timestamp getFirstDayOfQuarter(String yearStr, String qurStr) {if (yearStr == null)return null;if (qurStr == null)return null;String qurTmp = "";if ("1".equals(qurStr))qurTmp = "0";else if ("2".equals(qurStr))qurTmp = "3";else if ("3".equals(qurStr))qurTmp = "6";else if ("4".equals(qurStr))qurTmp = "9";Calendar c = Calendar.getInstance();c.set(Calendar.YEAR, new Integer(yearStr));c.set(Calendar.MONTH, new Integer(qurTmp)); //c.set(Calendar.DATE, 1);c.set(Calendar.HOUR_OF_DAY, 0);c.set(Calendar.MINUTE, 0);c.set(Calendar.SECOND, 0);c.set(LISECOND, 0);System.out.println(new Timestamp(c.getTimeInMillis()));return new Timestamp(c.getTimeInMillis());}/*** 返回指定年、⽉份的第⼀天返回类型是Timestamp 格式是“2013-04-01 00:00:00.0” ** @param yearStr* (例如参数:2013)* @param monthStr* (例如参数:4)* @return*/public static Timestamp getFirstDayOfMonth(String yearStr, String monthStr) {if (yearStr == null)return null;if (monthStr == null)return null;Calendar c = Calendar.getInstance();c.set(Calendar.YEAR, new Integer(yearStr));c.set(Calendar.MONTH, new Integer(monthStr) - 1); //c.set(Calendar.DATE, 1);c.set(Calendar.HOUR_OF_DAY, 0);c.set(Calendar.MINUTE, 0);c.set(Calendar.SECOND, 0);c.set(LISECOND, 0);System.out.println(new Timestamp(c.getTimeInMillis()));return new Timestamp(c.getTimeInMillis());}/*** 返回当前⽇期的上个⽉的当前时间段返回类型Timestamp 格式:”2013-12-21 12:15:45.096“ ** @param endTime* (例如参数:2014-01-21)* @return*/public static Timestamp getFirstDayOfPreMonth(Timestamp endTime) {Calendar c = Calendar.getInstance();c.setTime(new Date(endTime.getTime()));System.out.println(c.getTime());int y = c.get(Calendar.YEAR);int m = c.get(Calendar.MONTH) - 1;System.out.println(y);System.out.println(m);if (m == -1) {y = y - 1;m = 11;}c.set(Calendar.YEAR, y);c.set(Calendar.MONTH, m);return new Timestamp(c.getTimeInMillis());}/*** 返回上⼀年的第⼀个⽉的第⼀天返回类型Timestamp 格式:2013-01-01 00:00:00.0** @param curDate* @return*/public static Timestamp getPrevYearFirstDayOfMonth(Date curDate) {if (curDate == null)return null;Calendar c = Calendar.getInstance();c.setTime(curDate);c.set(Calendar.HOUR_OF_DAY, 0);c.set(Calendar.MINUTE, 0);c.set(Calendar.SECOND, 0);c.set(LISECOND, 0);c.set(Calendar.DATE, 1);// 设为当前⽉的1号c.add(Calendar.YEAR, -1);//System.out.println(new Timestamp(c.getTimeInMillis()));return new Timestamp(c.getTimeInMillis());}/*** 返回上⼀年的第⼆个⽉的第⼀天返回类型Timestamp 格式:2013-02-01 00:00:00.0** @param curDate* @return*/public static Timestamp getPrevYearFirstDayOfNextMonth(Date curDate) {if (curDate == null)return null;Calendar c = Calendar.getInstance();c.setTime(curDate);c.set(Calendar.HOUR_OF_DAY, 0);c.set(Calendar.MINUTE, 0);c.set(Calendar.SECOND, 0);c.set(LISECOND, 0);c.set(Calendar.DATE, 1);// 设为当前⽉的1号c.add(Calendar.MONTH, 1);//c.add(Calendar.YEAR, -1);//System.out.println(new Timestamp(c.getTimeInMillis()));return new Timestamp(c.getTimeInMillis());}/*** 返回字符串⽇期返回类型:string 参数类型:Timestamp 返回格式:yyyy.MM** @param tmp* @return*/public static String cvtTimestampToStr(Timestamp tmp) {if (tmp == null)return "";SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM");String timeStr = sdf.format(new Date(tmp.getTime()));System.out.println(timeStr);return timeStr;}/*** 返回字符串⽇期返回类型:string 参数类型:Date 返回格式:yyyy.MM** @param tmp* @return*/public static String cvtDateToStr(Date tmp) {if (tmp == null)return "";SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM");String timeStr = sdf.format(tmp);System.out.println(timeStr);return timeStr;}/*** 返回两个⽇期相差多少秒返回类型Integer 参数类型:Timestamp** @param startTime* @param endTime* @return*/public static Integer diffTimestamp4Second(Timestamp startTime,Timestamp endTime) {if (startTime == null || endTime == null)return 0;Integer diff = new Long((endTime.getTime() - startTime.getTime()) / 1000).intValue();return diff;}/*** 获取当前时间格式为yyyy-MM-dd HH:mm:ss的字符串* @return*/public static String getCurrentYYYYMMDDHHMMSS() {SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", ); formatter.setTimeZone(TimeZone.getTimeZone("GMT+8"));Date currTime = new Date();String thisTime = new String(formatter.format(currTime));return thisTime;}/*** 获取当前时间格式为yyyy-MM-dd HH:mm:ss的字符串* @param inputDate* @return*/public static String getYYYYMMDDHHMMSS(Date inputDate) {SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", ); formatter.setTimeZone(TimeZone.getTimeZone("GMT+8"));String thisTime = new String(formatter.format(inputDate));return thisTime;}/*** 获取当前时间格式为yyyy-MM-ddHHmmssSSS的字符串* @return*/public static String getCurrentYYYYMMDDHHMMssSSS() {SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-ddHHmmssSSS", ); formatter.setTimeZone(TimeZone.getTimeZone("GMT+8"));Date currTime = new Date();String thisTime = new String(formatter.format(currTime));return thisTime;}/*** 获取当前时间格式为yyyyMMddHHmmssSSS的字符串* @return*/public static String getCurrentYYYYMMDDHHMMssSSSFormat() {SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmssSSS", ); formatter.setTimeZone(TimeZone.getTimeZone("GMT+8"));Date currTime = new Date();String thisTime = new String(formatter.format(currTime));return thisTime;}/*** 获取当前时间格式为yyyyMMddHHmmssSSS的字符串* @return*/public static String getCurrentYYYYMMDDFormat() {SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd", );formatter.setTimeZone(TimeZone.getTimeZone("GMT+8"));Date currTime = new Date();String thisTime = new String(formatter.format(currTime));return thisTime;}/*** 获取当前时间格式为yyyy-MM-dd的字符串* @return*/public static String getCurrentYYYYMMDD() {SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd", );formatter.setTimeZone(TimeZone.getTimeZone("GMT+8"));Date currTime = new Date();String thisTime = new String(formatter.format(currTime));return thisTime;}/*** 获取当前时间格式为yyyyMMddHHmmss的字符串* @return*/public static String getCurrent_yyyyMMddHHmmss() {SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss", ); formatter.setTimeZone(TimeZone.getTimeZone("GMT+8"));Date currTime = new Date();String thisTime = new String(formatter.format(currTime));return thisTime;}/*** yyyyMMddHHmmss转换为yyyy-MM-dd HH:mm:ss 的字符串*/public static String getyMdHms(String str){StringBuffer sb =new StringBuffer();String s = str.trim();if(!s.isEmpty()){if(s.length()>3){sb.append(s.substring(0, 4));}if(s.length()>5){sb.append("-");sb.append(s.substring(4, 6));}if(s.length()>7){sb.append("-");sb.append(s.substring(6, 8));}if(s.length()>9){sb.append(" ");sb.append(s.substring(8, 10));}if(s.length()>11){sb.append(":");sb.append(s.substring(10, 12));}if(s.length()>13){sb.append(":");sb.append(s.substring(12, 14));}}return sb.toString();}}。

java常见的时间工具类-DateUtils

java常见的时间工具类-DateUtils

java常见的时间⼯具类-DateUtils package mon.util;import java.text.DecimalFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import ng3.time.DateFormatUtils;public class DateUtils {/*** 仅显⽰年⽉⽇,例如 2015-08-11.*/public static final String DATE_FORMAT = "yyyy-MM-dd";/*** 显⽰年⽉⽇时分秒,例如 2015-08-11 09:51:53.*/public static final String DATETIME_FORMAT = "yyyy-MM-dd HH:mm:ss";/*** 仅显⽰时分秒,例如 09:51:53.*/public static final String TIME_FORMAT = "HH:mm:ss";/*** 每天的毫秒数 8640000.*/public static final long MILLISECONDS_PER_DAY = 86400000L;/*** 每周的天数.*/public static final long DAYS_PER_WEEK = 7L;/*** 每⼩时毫秒数.*/public static final long MILLISECONDS_PER_HOUR = 3600000L;/*** 每分钟秒数.*/public static final long SECONDS_PER_MINUTE = 60L;/*** 每⼩时秒数.*/public static final long SECONDS_PER_HOUR = 3600L;/*** 每天秒数.*/public static final long SECONDS_PER_DAY = 86400L;/*** 每个⽉秒数,默认每⽉30天.*/public static final long SECONDS_PER_MONTH = 2592000L;/*** 每年秒数,默认每年365天.*/public static final long SECONDS_PER_YEAR = 31536000L;/*** 常⽤的时间格式.*/private static String[] parsePatterns = { "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy/MM/dd","yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm" };/*** 得到当前⽇期字符串.* @return String ⽇期字符串,例如2015-08-11* @since 1.0*/public static String getDate() {return getDate(DateUtils.DATE_FORMAT);}public static String getTime() {return formatDate(new Date(), DateUtils.TIME_FORMAT);}/*** 得到当前⽇期和时间字符串.* @return String ⽇期和时间字符串,例如 2015-08-11 09:51:53* @since 1.0*/public static String getDateTime() {return formatDate(new Date(), DateUtils.DATETIME_FORMAT);}/*** 获取当前时间指定格式下的字符串.* @param pattern* 转化后时间展⽰的格式,例如"yyyy-MM-dd","yyyy-MM-dd HH:mm:ss"等 * @return String 格式转换之后的时间字符串.* @since 1.0*/public static String getDate(String pattern) {return DateFormatUtils.format(new Date(), pattern);}/*** 获取指定⽇期的字符串格式.* @param date 需要格式化的时间,不能为空* @param pattern 时间格式,例如"yyyy-MM-dd","yyyy-MM-dd HH:mm:ss"等* @return String 格式转换之后的时间字符串.* @since 1.0*/public static String getDate(Date date, String pattern) {return DateFormatUtils.format(date, pattern);}/*** 获取⽇期时间字符串,默认格式为(yyyy-MM-dd).* @param date 需要转化的⽇期时间* @param pattern 时间格式,例如"yyyy-MM-dd" "HH:mm:ss" "E"等* @return String 格式转换后的时间字符串* @since 1.0*/public static String formatDate(Date date, Object... pattern) {String formatDate = null;if (pattern != null && pattern.length > 0) {formatDate = DateFormatUtils.format(date, pattern[0].toString());} else {formatDate = DateFormatUtils.format(date, DateUtils.DATE_FORMAT);}return formatDate;}/*** 获取当前年份字符串.* @return String 当前年份字符串,例如 2015* @since 1.0*/public static String getYear() {return formatDate(new Date(), "yyyy");}/*** 获取当前⽉份字符串.* @return String 当前⽉份字符串,例如 08* @since 1.0*/public static String getMonth() {return formatDate(new Date(), "MM");}/*** 获取当前天数字符串.* @return String 当前天数字符串,例如 11* @since 1.0*/public static String getDay() {return formatDate(new Date(), "dd");}public static String getWeek() {return formatDate(new Date(), "E");}/*** 将⽇期型字符串转换为⽇期格式.* ⽀持的⽇期字符串格式包括"yyyy-MM-dd","yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm",* "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm"* @param str* @return Date* @since 1.0*/public static Date parseDate(Object str) {if (str == null) {return null;}try {return ng3.time.DateUtils.parseDate(str.toString(), parsePatterns);} catch (ParseException e) {return null;}}/*** 获取当前⽇期与指定⽇期相隔的天数.* @param date 给定的⽇期* @return long ⽇期间隔天数,正数表⽰给定⽇期在当前⽇期之前,负数表⽰在当前⽇期之后* @since 1.0*/public static long pastDays(Date date) {// 将指定⽇期转换为yyyy-MM-dd格式date = DateUtils.parseDate(DateUtils.formatDate(date, DateUtils.DATE_FORMAT));// 当前⽇期转换为yyyy-MM-dd格式Date currentDate = DateUtils.parseDate(DateUtils.formatDate(new Date(), DateUtils.DATE_FORMAT)); long t=0;if(date!=null&&currentDate!=null){t = (currentDate.getTime() - date.getTime()) / LISECONDS_PER_DAY;}return t;}/*** 获取当前⽇期指定天数之后的⽇期.* @param num 相隔天数* @return Date ⽇期* @since 1.0*/public static Date nextDay(int num) {Calendar curr = Calendar.getInstance();curr.set(Calendar.DAY_OF_MONTH, curr.get(Calendar.DAY_OF_MONTH) + num);return curr.getTime();}/*** 获取当前⽇期指定⽉数之后的⽇期.* @param num 间隔⽉数* @return Date ⽇期* @since 1.0*/public static Date nextMonth(int num) {Calendar curr = Calendar.getInstance();curr.set(Calendar.MONTH, curr.get(Calendar.MONTH) + num);return curr.getTime();}/*** 获取当前⽇期指定年数之后的⽇期.* @param num 间隔年数* @return Date ⽇期* @since 1.0*/public static Date nextYear(int num) {Calendar curr = Calendar.getInstance();curr.set(Calendar.YEAR, curr.get(Calendar.YEAR) + num);return curr.getTime();}/*** 将 Date ⽇期转化为 Calendar 类型⽇期.* @return Calendar Calendar对象* @since 1.0*/public static Calendar getCalendar(Date date) {Calendar calendar = Calendar.getInstance();// calendar.setFirstDayOfWeek(Calendar.SUNDAY);//每周从周⽇开始// calendar.setMinimalDaysInFirstWeek(1); // 设置每周最少为1天if (date != null) {calendar.setTime(date);}return calendar;}/*** 计算两个⽇期之间相差天数.* @param start 计算开始⽇期* @param end 计算结束⽇期* @return long 相隔天数* @since 1.0*/public static long getDaysBetween(Date start, Date end) {// 将指定⽇期转换为yyyy-MM-dd格式start = DateUtils.parseDate(DateUtils.formatDate(start, DateUtils.DATE_FORMAT));// 当前⽇期转换为yyyy-MM-dd格式end = DateUtils.parseDate(DateUtils.formatDate(end, DateUtils.DATE_FORMAT));long diff=0;if(start!=null&&end!=null) {diff = (end.getTime() - start.getTime()) / LISECONDS_PER_DAY;}return diff;}/*** 计算两个⽇期之前相隔多少周.* @param start 计算开始时间* @param end 计算结束时间* @return long 相隔周数,向下取整* @since 1.0*/public static long getWeeksBetween(Date start, Date end) {return getDaysBetween(start, end) / DateUtils.DAYS_PER_WEEK;}/*** 获取与指定⽇期间隔给定天数的⽇期.* @param specifiedDay 给定的字符串格式⽇期,⽀持的⽇期字符串格式包括"yyyy-MM-dd","yyyy-MM-dd HH:mm:ss", * "yyyy-MM-dd HH:mm", "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss",* "yyyy/MM/dd HH:mm"* @param num 间隔天数* @return String 间隔指定天数之后的⽇期* @since 1.0*/public static String getSpecifiedDayAfter(String specifiedDay, int num) {Date specifiedDate = parseDate(specifiedDay);Calendar c = Calendar.getInstance();c.setTime(specifiedDate);int day = c.get(Calendar.DATE);c.set(Calendar.DATE, day + num);String dayAfter = formatDate(c.getTime(), DateUtils.DATE_FORMAT);return dayAfter;}/*** 计算两个⽇期之前间隔的⼩时数.** @param date1* 结束时间* @param date2* 开始时间* @return String 相差的⼩时数,保留⼀位⼩数* @since 1.0*/public static String dateMinus(Date date1, Date date2) {if (date1 == null || date2 == null) {return "0";}Long r = date1.getTime() - date2.getTime();DecimalFormat df = new DecimalFormat("#.0");double result = r * 1.0 / LISECONDS_PER_HOUR;return df.format(result);}* 获取当前季度 .** @return Integer 当前季度数* @since 1.0*/public static Integer getCurrentSeason() {Calendar calendar = Calendar.getInstance();Integer month = calendar.get(Calendar.MONTH) + 1;int season = 0;if (month >= 1 && month <= 3) {season = 1;} else if (month >= 4 && month <= 6) {season = 2;} else if (month >= 7 && month <= 9) {season = 3;} else if (month >= 10 && month <= 12) {season = 4;}return season;}/*** 将以秒为单位的时间转换为其他单位.** @param seconds* 秒数* @return String 例如 16分钟前、2⼩时前、3天前、4⽉前、5年前等* @since 1.0*/public static String getIntervalBySeconds(long seconds) {StringBuffer buffer = new StringBuffer();if (seconds < SECONDS_PER_MINUTE) {buffer.append(seconds).append("秒前");} else if (seconds < SECONDS_PER_HOUR) {buffer.append(seconds / SECONDS_PER_MINUTE).append("分钟前");} else if (seconds < SECONDS_PER_DAY) {buffer.append(seconds / SECONDS_PER_HOUR).append("⼩时前");} else if (seconds < SECONDS_PER_MONTH) {buffer.append(seconds / SECONDS_PER_DAY).append("天前");} else if (seconds < SECONDS_PER_YEAR) {buffer.append(seconds / SECONDS_PER_MONTH).append("⽉前");} else {buffer.append(seconds / DateUtils.SECONDS_PER_YEAR).append("年前"); }return buffer.toString();}/**** getNowTimeBefore(记录时间相当于⽬前多久之前)** @param seconds* 秒* @return* @exception @since* 1.0* @author rlliu*/public static String getNowTimeBefore(long seconds) {StringBuffer buffer = new StringBuffer();buffer.append("上传于");if (seconds < 3600) {buffer.append((long) Math.floor(seconds / 60.0)).append("分钟前");} else if (seconds < 86400) {buffer.append((long) Math.floor(seconds / 3600.0)).append("⼩时前");} else if (seconds < 604800) {buffer.append((long) Math.floor(seconds / 86400.0)).append("天前");} else if (seconds < 2592000) {buffer.append((long) Math.floor(seconds / 604800.0)).append("周前");} else if (seconds < 31104000) {buffer.append((long) Math.floor(seconds / 2592000.0)).append("⽉前");} else {buffer.append((long) Math.floor(seconds / 31104000.0)).append("年前");}return buffer.toString();}/**** getMonthsBetween(查询两个⽇期相隔的⽉份)** @param startDate 开始⽇期1 (格式yyyy-MM-dd)* @param endDate 截⽌⽇期2 (格式yyyy-MM-dd)public static int getMonthsBetween(String startDate, String endDate) {Calendar c1 = Calendar.getInstance();Calendar c2 = Calendar.getInstance();c1.setTime(DateUtils.parseDate(startDate));c2.setTime(DateUtils.parseDate(endDate));int year = c2.get(Calendar.YEAR) - c1.get(Calendar.YEAR);int month = c2.get(Calendar.MONTH) - c1.get(Calendar.MONTH);return Math.abs(year * 12 + month);}/**** getDayOfWeek(获取当前⽇期是星期⼏)** @param dateStr ⽇期* @return 星期⼏*/public static String getDayOfWeek(String dateStr) {String[] weekOfDays = { "星期⽇", "星期⼀", "星期⼆", "星期三", "星期四", "星期五", "星期六" };Date date = parseDate(dateStr);Calendar calendar = Calendar.getInstance();calendar.setTime(date);int num = calendar.get(Calendar.DAY_OF_WEEK) - 1;return weekOfDays[num];}/*** sns 格式如⼏秒前,⼏分钟前,⼏⼩时前,⼏天前,⼏个⽉前,⼏年后, ... 精细,类如某个明星⼏秒钟之前发表了⼀篇微博 ** @param createTime* @return*/public static String snsFormat(long createTime) {long now = System.currentTimeMillis() / 1000;long differ = now - createTime / 1000;String dateStr = "";if (differ <= 60) {dateStr = "刚刚";} else if (differ <= 3600) {dateStr = (differ / 60) + "分钟前";} else if (differ <= 3600 * 24) {dateStr = (differ / 3600) + "⼩时前";} else if (differ <= 3600 * 24 * 30) {dateStr = (differ / (3600 * 24)) + "天前";} else {Date date = new Date(createTime);SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");dateStr = sdf.format(date);}return dateStr;}/*** 得到UTC时间,类型为字符串,格式为"yyyy-MM-dd HH:mm"* 如果获取失败,返回null* @return*/public static String getUTCTimeStr() {StringBuffer UTCTimeBuffer = new StringBuffer();// 1、取得本地时间:Calendar cal = Calendar.getInstance() ;// 2、取得时间偏移量:int zoneOffset = cal.get(java.util.Calendar.ZONE_OFFSET);// 3、取得夏令时差:int dstOffset = cal.get(java.util.Calendar.DST_OFFSET);// 4、从本地时间⾥扣除这些差量,即可以取得UTC时间:cal.add(LISECOND, -(zoneOffset + dstOffset));int year = cal.get(Calendar.YEAR);int month = cal.get(Calendar.MONTH)+1;int day = cal.get(Calendar.DAY_OF_MONTH);int hour = cal.get(Calendar.HOUR_OF_DAY);int minute = cal.get(Calendar.MINUTE);UTCTimeBuffer.append(year).append("-").append(month).append("-").append(day) ;UTCTimeBuffer.append(" ").append(hour).append(":").append(minute) ;try{SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");sdf.parse(UTCTimeBuffer.toString()) ;return UTCTimeBuffer.toString() ;}catch(ParseException e){e.printStackTrace() ;}}。

超详细的Java时间工具类

超详细的Java时间工具类

超详细的Java时间⼯具类package com.td.util;import java.sql.Timestamp;import java.text.ParseException;import java.text.ParsePosition;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;import java.util.List;import java.util.Locale;import java.util.Random;import org.apache.log4j.chainsaw.Main;/*** 超详细的时间⼯具类* @author Administrator**/public class TimeUtil {//============================借助Calendar类获取今天、昨天、本周、上周、本年及特定时间的开始时间和结束时间(返回类型为date类型)======================== /*** 获取当天开始时间* @return*/public static Date getDayBegin(){Calendar cal=Calendar.getInstance();cal.set(Calendar.HOUR_OF_DAY, 0);//0点cal.set(Calendar.MINUTE, 0);//0分cal.set(Calendar.SECOND, 0);//0秒cal.set(LISECOND, 0);//0毫秒return cal.getTime();}/*** 获取当天结束时间* @return*/public static Date getDayEnd(){Calendar cal=Calendar.getInstance();cal.set(Calendar.HOUR_OF_DAY, 23);//23点cal.set(Calendar.MINUTE, 59);//59分cal.set(Calendar.SECOND, 59);//59秒return cal.getTime();}/*** 获取昨天开始时间* @return*/public static Date getBeginDayOfYesterday(){Calendar cal=Calendar.getInstance();cal.setTime(getDayBegin());//当天开始时间cal.add(Calendar.DAY_OF_MONTH, -1);//当天⽉份天数减1return cal.getTime();}/*** 获取昨天结束时间* @return*/public static Date getEndDayOfYesterday(){Calendar cal=Calendar.getInstance();cal.setTime(getDayEnd());//当天结束时间cal.add(Calendar.DAY_OF_MONTH, -1);//当天⽉份天数减1return cal.getTime();}/*** 获取明天开始时间* @return*/public static Date getBeginDayOfTomorrow(){Calendar cal=Calendar.getInstance();cal.setTime(getDayBegin());//当天开始时间cal.add(Calendar.DAY_OF_MONTH, 1);//当天⽉份天数加1return cal.getTime();/*** 获取明天结束时间* @return*/public static Date getEndDayOfTomorrow(){Calendar cal=Calendar.getInstance();cal.setTime(getDayEnd());//当天结束时间cal.add(Calendar.DAY_OF_MONTH, 1);//当天⽉份天数加1 return cal.getTime();}/*** 获取某个⽇期的开始时间* @param d* @return*/public static Timestamp getDayStartTime(Date d) {Calendar calendar=Calendar.getInstance();if(null!=d){calendar.setTime(d);}calendar.set(calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);calendar.set(LISECOND, 0);return new Timestamp(calendar.getTimeInMillis());}/*** 获取某个⽇期的结束时间* @param d* @return*/public static Timestamp getDayEndTime(Date d) {Calendar calendar=Calendar.getInstance();if(null!=d){calendar.setTime(d);}calendar.set(calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),calendar.get(Calendar.DAY_OF_MONTH), 23, 59, 59); calendar.set(LISECOND, 999);return new Timestamp(calendar.getTimeInMillis());}/*** 获取本周的开始时间* @return*/@SuppressWarnings("unused")public static Date getBeginDayOfWeek(){Date date=new Date();if(date==null){return null;}Calendar cal=Calendar.getInstance();cal.setTime(date);int dayOfWeek=cal.get(Calendar.DAY_OF_WEEK);if(dayOfWeek==1){dayOfWeek+=7;}cal.add(Calendar.DATE, 2-dayOfWeek);return getDayStartTime(cal.getTime());}/*** 获取本周的结束时间* @return*/public static Date getEndDayOfWeek(){Calendar cal=Calendar.getInstance();cal.setTime(getBeginDayOfWeek());cal.add(Calendar.DAY_OF_WEEK, 6);Date weekEndSta = cal.getTime();return getDayEndTime(weekEndSta);}/*** 获取上周开始时间*/@SuppressWarnings("unused")Date date=new Date();if (date==null) {return null;}Calendar cal=Calendar.getInstance();cal.setTime(date);int dayofweek=cal.get(Calendar.DAY_OF_WEEK);if (dayofweek==1) {dayofweek+=7;}cal.add(Calendar.DATE, 2-dayofweek-7);return getDayStartTime(cal.getTime());}/*** 获取上周的结束时间* @return*/public static Date getEndDayOfLastWeek(){Calendar cal=Calendar.getInstance();cal.setTime(getBeginDayOfLastWeek());cal.add(Calendar.DAY_OF_WEEK, 6);Date weekEndSta = cal.getTime();return getDayEndTime(weekEndSta);}/*** 获取今年是哪⼀年* @return*/public static Integer getNowYear(){Date date = new Date();GregorianCalendar gc=(GregorianCalendar)Calendar.getInstance(); gc.setTime(date);return Integer.valueOf(gc.get(1));}/*** 获取本⽉是哪⼀⽉* @return*/public static int getNowMonth() {Date date = new Date();GregorianCalendar gc=(GregorianCalendar)Calendar.getInstance(); gc.setTime(date);return gc.get(2) + 1;}/*** 获取本⽉的开始时间* @return*/public static Date getBeginDayOfMonth() {Calendar calendar=Calendar.getInstance();calendar.set(getNowYear(), getNowMonth()-1, 1);return getDayStartTime(calendar.getTime());}/*** 获取本⽉的结束时间* @return*/public static Date getEndDayOfMonth() {Calendar calendar=Calendar.getInstance();calendar.set(getNowYear(), getNowMonth()-1, 1);int day = calendar.getActualMaximum(5);calendar.set(getNowYear(), getNowMonth()-1, day);return getDayEndTime(calendar.getTime());}/*** 获取上⽉的开始时间* @return*/public static Date getBeginDayOfLastMonth() {Calendar calendar=Calendar.getInstance();calendar.set(getNowYear(), getNowMonth()-2, 1);return getDayStartTime(calendar.getTime());}/*** @return*/public static Date getEndDayOfLastMonth() {Calendar calendar=Calendar.getInstance();calendar.set(getNowYear(), getNowMonth()-2, 1);int day = calendar.getActualMaximum(5);calendar.set(getNowYear(), getNowMonth()-2, day);return getDayEndTime(calendar.getTime());}/*** 获取本年的开始时间* @return*/public static java.util.Date getBeginDayOfYear() {Calendar cal=Calendar.getInstance();cal.set(Calendar.YEAR, getNowYear());cal.set(Calendar.MONTH, Calendar.JANUARY);cal.set(Calendar.DATE, 1);return getDayStartTime(cal.getTime());}/*** 获取本年的结束时间* @return*/public static java.util.Date getEndDayOfYear() {Calendar cal = Calendar.getInstance();cal.set(Calendar.YEAR, getNowYear());cal.set(Calendar.MONTH, Calendar.DECEMBER);cal.set(Calendar.DATE, 31);return getDayEndTime(cal.getTime());}/*** 两个⽇期相减得到的天数* @param beginDate* @param endDate* @return*/public static int getDiffDays(Date beginDate, Date endDate) {if(beginDate==null||endDate==null) {throw new IllegalArgumentException("getDiffDays param is null!"); }long diff=(endDate.getTime()-beginDate.getTime())/(1000*60*60*24); int days = new Long(diff).intValue();return days;}/*** 两个⽇期相减得到的毫秒数* @param beginDate* @param endDate* @return*/public static long dateDiff(Date beginDate, Date endDate) {long date1ms=beginDate.getTime();long date2ms=endDate.getTime();return date2ms-date1ms;}/*** 获取两个⽇期中的最⼤⽇起* @param beginDate* @param endDate* @return*/public static Date max(Date beginDate, Date endDate) {if(beginDate==null) {return endDate;}if(endDate==null) {return beginDate;}if(beginDate.after(endDate)) {//beginDate⽇期⼤于endDatereturn beginDate;}return endDate;}/*** 获取两个⽇期中的最⼩⽇期* @param endDate* @return*/public static Date min(Date beginDate, Date endDate) {if(beginDate==null) {return endDate;}if(endDate==null) {return beginDate;}if(beginDate.after(endDate)) {return endDate;}return beginDate;}/*** 获取某⽉该季度的第⼀个⽉* @param date* @return*/public static Date getFirstSeasonDate(Date date) {final int[] SEASON={ 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4 };Calendar cal=Calendar.getInstance();cal.setTime(date);int sean = SEASON[cal.get(Calendar.MONTH)];cal.set(Calendar.MONTH, sean*3-3);return cal.getTime();}/*** 返回某个⽇期下⼏天的⽇期* @param date* @param i* @return*/public static Date getNextDay(Date date, int i) {Calendar cal=new GregorianCalendar();cal.setTime(date);cal.set(Calendar.DATE,cal.get(Calendar.DATE)+i);return cal.getTime();}/*** 返回某个⽇期前⼏天的⽇期* @param date* @param i* @return*/public static Date getFrontDay(Date date, int i) {Calendar cal=new GregorianCalendar();cal.setTime(date);cal.set(Calendar.DATE, cal.get(Calendar.DATE)-i);return cal.getTime();}/*** 获取某年某⽉按天切⽚⽇期集合(某个⽉间隔多少天的⽇期集合)* @param beginYear* @param beginMonth* @param k* @return*/@SuppressWarnings({ "unchecked", "rawtypes" })public static List getTimeList(int beginYear, int beginMonth, int k) {List list = new ArrayList();Calendar begincal=new GregorianCalendar(beginYear,beginMonth, 1); int max = begincal.getActualMaximum(Calendar.DATE);for (int i = 1; i < max; i = i + k) {list.add(begincal.getTime());begincal.add(Calendar.DATE, k);}begincal = new GregorianCalendar(beginYear, beginMonth, max);list.add(begincal.getTime());return list;}/*** 获取某年某⽉到某年某⽉按天的切⽚⽇期集合(间隔天数的集合)* @param beginYear* @param beginMonth* @param endYear* @param k* @return*/@SuppressWarnings({ "rawtypes", "unchecked" })public static List getTimeList(int beginYear,int beginMonth,int endYear,int endMonth, int k) {List list = new ArrayList();if (beginYear==endYear){for(int j=beginMonth;j<=endMonth;j++){list.add(getTimeList(beginYear,j,k));}}else{{for(int j=beginMonth;j<12;j++){list.add(getTimeList(beginYear,j,k));}for(int i=beginYear+1;i<endYear;i++) {for (int j=0; j<12; j++) {list.add(getTimeList(i,j,k));}}for (int j=0;j <= endMonth; j++) {list.add(getTimeList(endYear, j, k));}}}return list;}//=================================时间格式转换==========================/*** date类型进⾏格式化输出(返回类型:String)* @param date* @return*/public static String dateFormat(Date date) {SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String dateString = formatter.format(date);return dateString;}/*** 将"2015-08-31 21:08:06"型字符串转化为Date* @param str* @return* @throws ParseException*/public static Date StringToDate(String str) throws ParseException{SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date date = (Date) formatter.parse(str);return date;}/*** 将CST时间类型字符串进⾏格式化输出* @param str* @return* @throws ParseException*/public static String CSTFormat(String str) throws ParseException{SimpleDateFormat formatter = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", ); Date date = (Date) formatter.parse(str);return dateFormat(date);}/*** 将long类型转化为Date* @param str* @return* @throws ParseException*/public static Date LongToDare(long str) throws ParseException{return new Date(str * 1000);}//====================================其他常见⽇期操作⽅法======================/**** @param startDate 开始⽇期* @param endDate 结束⽇期* @author jqlin* @return*/public static boolean isEffectiveDate(Date startDate, Date endDate){if(startDate == null || endDate == null){return false;}long currentTime = new Date().getTime();if(currentTime >= startDate.getTime()&& currentTime <= endDate.getTime()){return true;}return false;}/*** 得到⼆个⽇期间的间隔天数* @param secondString:后⼀个⽇期* @param firstString:前⼀个⽇期* @return*/public static String getTwoDay(String secondString, String firstString) {SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");long day = 0;try {java.util.Date secondTime = myFormatter.parse(secondString);java.util.Date firstTime = myFormatter.parse(firstString);day = (secondTime.getTime() - firstTime.getTime()) / (24 * 60 * 60 * 1000);} catch (Exception e) {return "";}return day + "";}/*** 时间前推或后推分钟,其中JJ表⽰分钟.* @param StringTime:时间* @param minute:分钟(有正负之分)* @return*/public static String getPreTime(String StringTime, String minute) {SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String mydate1 = "";try {Date date1 = format.parse(StringTime);long Time = (date1.getTime() / 1000) + Integer.parseInt(minute) * 60;date1.setTime(Time * 1000);mydate1 = format.format(date1);} catch (Exception e) {return "";}return mydate1;}/*** 将短时间格式字符串转换为时间 yyyy-MM-dd** @param strDate* @return*/public static Date strToDate(String strDate) {SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");ParsePosition pos = new ParsePosition(0);Date strtodate = formatter.parse(strDate, pos);return strtodate;}/*** 得到⼀个时间延后或前移⼏天的时间* @param nowdate:时间* @param delay:前移或后延的天数* @return*/public static String getNextDay(String nowdate, String delay) {try{SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");String mdate = "";Date d = strToDate(nowdate);long myTime = (d.getTime() / 1000) + Integer.parseInt(delay) * 24 * 60 * 60;d.setTime(myTime * 1000);}catch(Exception e){return "";}}/*** 判断是否闰年* @param ddate* @return*/public static boolean isLeapYear(String ddate) {/*** 详细设计: 1.被400整除是闰年,否则: 2.不能被4整除则不是闰年 3.能被4整除同时不能被100整除则是闰年 * 3.能被4整除同时能被100整除则不是闰年*/Date d = strToDate(ddate);GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();gc.setTime(d);int year = gc.get(Calendar.YEAR);if ((year % 400) == 0){return true;}else if ((year % 4) == 0){if ((year % 100) == 0){return false;}else{return true;}}else{return false;}}/*** 返回美国时间格式* @param str* @return*/public static String getEDate(String str) {SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");ParsePosition pos = new ParsePosition(0);Date strtodate = formatter.parse(str, pos);String j = strtodate.toString();String[] k = j.split(" ");return k[2] + k[1].toUpperCase() + k[5].substring(2, 4);}/*** 判断⼆个时间是否在同⼀个周* @param date1* @param date2* @return*/public static boolean isSameWeekDates(Date date1, Date date2) {Calendar cal1 = Calendar.getInstance();Calendar cal2 = Calendar.getInstance();cal1.setTime(date1);cal2.setTime(date2);int subYear = cal1.get(Calendar.YEAR) - cal2.get(Calendar.YEAR);if(0 == subYear) {if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR)){return true;}}else if(1 == subYear && 11 == cal2.get(Calendar.MONTH)) {// 如果12⽉的最后⼀周横跨来年第⼀周的话则最后⼀周即算做来年的第⼀周if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR)){return true;}}else if (-1 == subYear && 11 == cal1.get(Calendar.MONTH)) {if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR)){return true;}}return false;}/*** 产⽣周序列,即得到当前时间所在的年度是第⼏周* @return*/public static String getSeqWeek() {Calendar c = Calendar.getInstance(Locale.CHINA);String week = Integer.toString(c.get(Calendar.WEEK_OF_YEAR));String year = Integer.toString(c.get(Calendar.YEAR));return year +"年第"+ week+"周";}/*** 获得⼀个⽇期所在的周的星期⼏的⽇期,如要找出2002年2⽉3⽇所在周的星期⼀是⼏号 * @param sdate:⽇期* @param num:星期⼏(星期天是⼀周的第⼀天)* @return*/public static String getWeek(String sdate, String num) {// 再转换为时间Date dd = strToDate(sdate);Calendar c = Calendar.getInstance();c.setTime(dd);if (num.equals("1")) // 返回星期⼀所在的⽇期c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);else if (num.equals("2")) // 返回星期⼆所在的⽇期c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);else if (num.equals("3")) // 返回星期三所在的⽇期c.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY);else if (num.equals("4")) // 返回星期四所在的⽇期c.set(Calendar.DAY_OF_WEEK, Calendar.THURSDAY);else if (num.equals("5")) // 返回星期五所在的⽇期c.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);else if (num.equals("6")) // 返回星期六所在的⽇期c.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);else if (num.equals("0")) // 返回星期⽇所在的⽇期c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);return new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());}/*** 根据⼀个⽇期,返回是星期⼏的字符串* @param sdate* @return*/public static String getWeek(String sdate) {// 再转换为时间Date date = strToDate(sdate);Calendar c = Calendar.getInstance();c.setTime(date);// int hour=c.get(Calendar.DAY_OF_WEEK);// hour中存的就是星期⼏了,其范围 1~7// 1=星期⽇ 7=星期六,其他类推return new SimpleDateFormat("EEEE").format(c.getTime());}/*** 根据⼀个⽇期,返回是星期⼏的字符串* @param sdate* @return*/public static String getWeekStr(String sdate){String str = "";str = getWeek(sdate);if("1".equals(str)){str = "星期⽇";}else if("2".equals(str)){str = "星期⼀";}else if("3".equals(str)){str = "星期⼆";}else if("4".equals(str)){str = "星期三";}else if("5".equals(str)){str = "星期四";}else if("6".equals(str)){str = "星期五";}else if("7".equals(str)){str = "星期六";}return str;}/*** 两个时间之间的天数* @param date1* @param date2* @return*/public static long getDays(String date1, String date2) {if (date1 == null || date1.equals(""))return 0;return 0;// 转换为标准时间SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");java.util.Date date = null;java.util.Date mydate = null;try {date = myFormatter.parse(date1);mydate = myFormatter.parse(date2);} catch (Exception e) {}long day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000);return day;}/*** 形成如下的⽇历,根据传⼊的⼀个时间返回⼀个结构星期⽇星期⼀星期⼆星期三星期四星期五星期六下⾯是当⽉的各个时间 * 此函数返回该⽇历第⼀⾏星期⽇所在的⽇期* @param sdate* @return*/public static String getNowMonth(String sdate) {// 取该时间所在⽉的⼀号sdate = sdate.substring(0, 8) + "01";// 得到这个⽉的1号是星期⼏Date date = strToDate(sdate);Calendar c = Calendar.getInstance();c.setTime(date);int u = c.get(Calendar.DAY_OF_WEEK);String newday = getNextDay(sdate, (1 - u) + "");return newday;}/*** 根据⽤户传⼊的时间表⽰格式,返回当前时间的格式如果是yyyyMMdd,注意字母y不能⼤写* @param sformat* @return*/public static String getUserDate(String sformat) {Date currentTime = new Date();SimpleDateFormat formatter = new SimpleDateFormat(sformat);String dateString = formatter.format(currentTime);return dateString;}/*** 返回⼀个i位数的随机数* @param i* @return*/public static String getRandom(int i) {Random jjj = new Random();// int suiJiShu = jjj.nextInt(9);if (i == 0)return "";String jj = "";for (int k = 0; k < i; k++) {jj = jj + jjj.nextInt(9);}return jj;}/*** 取得数据库主键⽣成格式为yyyymmddhhmmss+k位随机数* @param k:表⽰是取⼏位随机数,可以⾃⼰定* @return*/public static String getNo(int k) {return getUserDate("yyyyMMddhhmmss") + getRandom(k);}public static void main(String[] args) {System.out.println(getNo(8));}}。

Java时间格式转换工具类

Java时间格式转换工具类

Java时间格式转换⼯具类把当前时间修改成指定时间//把当前时间修改成指定时间public String dateUtil(Integer seconds, String dateFormatPattern){Date date = new Date();Long millis = date.getTime() + seconds * 1000; //时间毫秒值SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dateFormatPattern);String time = simpleDateFormat.format(millis);return time;}@Testpublic void dateTest(){String firstActualDate = dateUtil(-1200,"yyyy-MM-dd HH:mm"); //第⼀次实际到站时间点String secondActualDate = dateUtil(0,"yyyy-MM-dd HH:mm"); //第⼆次实际到站时间点, ps:第⼀次到站时间必须⼩于第⼆次到站时间点 String plan_startTime = dateUtil(86400,"yyyy-MM-dd HH:mm"); //计划发车开始时间String plan_endTime = dateUtil(345600,"yyyy-MM-dd HH:mm"); //计划到达时间String departureDate = dateUtil(0,"yyyy-MM-dd"); //搜索该计划发车班次仓位System.out.println(firstActualDate);System.out.println(secondActualDate);System.out.println(plan_startTime);System.out.println(plan_endTime);System.out.println(departureDate);}result:2018-04-24 18:582018-04-24 19:182018-04-25 19:182018-04-28 19:182018-04-24把时间转换成毫秒//把⽇期格式转换毫秒public Long dateToMillis( String date ){SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");Long time = null;try {time = simpleDateFormat.parse(date).getTime();} catch (ParseException e) {e.printStackTrace();}return time ;}@Testpublic void dateToMillisTest (){Long date = dateToMillis("2018-04-25 11:12");System.out.println(date);}result:1524625920000。

Java常用的时间工具类DateTimeUtils.java对常用的时间操作方法总结

Java常用的时间工具类DateTimeUtils.java对常用的时间操作方法总结

Java常用的时间工具类DateTimeUtils.java对常用的时间操作方法总结话不多少,直接上代码!时间工具类DateTimeUtils.java 汇总了以前常用的时间操作方法!工具类方法列表:1.将 String 转为 date2.日期字符串格式化输出3.Date类型日期转字符串格式化输出4.增加天数后的Date日期5.计算日期{@link Date}增加某天数后的Date类型日期6.减少天数后的日期7.增加月数后的日期8.减少月数后的日期9.减少年数后的日期10.计算月份差11.计算两个日期的间隔天数/比较日期大小12.计算两个时间的毫秒间隔13.计算两个时间的分钟差14.判断是否为交易日/工作日15.判断是否是周末16.判断是否为国家法定节假日17.判断是否为国家调整后的工作日18.获得时间指定时间差值日期19.判断目标时间是否在区间内20.获取当前8位系统日期21.获取当前6位系统时间22.获取当前14位系统日期时间23.按指定格式获取当前系统日期时间24.获取字符串start到end天数间隔25.获取Date日期类型start到end天数间隔还有其他操作,逐步补充中 .......package com....;import ng3.StringUtils;import org.joda.time.DateTime;import org.joda.time.Days;import org.joda.time.LocalDate;import org.joda.time.format.DateTimeFormat;import org.joda.time.format.DateTimeFormatter;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Calendar;import java.util.Date;import java.util.List;/*** @version V1.0* @File: DateUtils* @Description: 常用的时间处理方法集合工具类* @author: aitree*/public class DateUtils {/*** 时间格式常量*/public static final String COMMON_PATTERN = "yyyy-MM-dd HH:mm:ss";public static final String COMMON_PATTERN_TYPE2 ="yyyy/MM/dd HH:mm:ss";public static final String SHORT_PATTERN = "yyyy-MM-dd";public static final String SHORT_PATTERN_TYPE2 = "yyyy/MM/dd";public static final String LONG_PATTERN = "yyyy-MM-dd HH:mm:ss.SSS";public static final String SUP_SHORT_PATTERN = "yyyyMMdd";public static final String SUP_LONG_PATTERN = "yyyyMMddHHmmss";public static final String YEAR_MONTH = "yyyyMM";public static final String CN_SHORT_PATTERN = "yyyy年MM月dd日";public static final String DDMM_PATTERN = "ddMM";/*** 1、将 String 解析为 date** @param dateString 待解析的日期字符串* @param pattern 日期字符串的时间格式* @return*/public static Date trans2Date(String dateString, String pattern) {String fRTN = StringUtils.isNotBlank(pattern) ? pattern : COMMON_PATTERN;DateTimeFormatter format = DateTimeFormat.forPattern(fRTN);DateTime dt = DateTime.parse(dateString, format);return dt.toDate();}/***/2、日期字符串格式化输出** @param dateString 待格式化的日期字符串* @param fromPattern 待格式化日期字符串的格式* @param toPattern 格式化后的日期格式* @return*/public static String formatDate2String(String dateString, String fromPattern, String toPattern) {String tRTN = StringUtils.isNotBlank(toPattern) ? toPattern : COMMON_PATTERN;DateTimeFormatter format = DateTimeFormat.forPattern(fromPattern);DateTime dt = DateTime.parse(dateString, format);return dt.toString(tRTN);}/*** 3、Date类型日期转字符串格式化输出** @param date 待格式化的日期* @param pattern 格式化后的格式* @return*/public static String formatDate2String(Date date, String pattern) {String fRTN = StringUtils.isNotBlank(pattern) ? pattern : COMMON_PATTERN;DateTimeFormatter format = DateTimeFormat.forPattern(fRTN);return new DateTime(date).toString(format);}/*** 4、增加天数后的Date日期** @param date 起点日期(date/string)* @param daysCount 增加天数* @return*/public static <T> Date add(T date, int daysCount) {DateTime dt = new DateTime(date);return dt.plusDays(daysCount).toDate();}/*** 5、计算日期{@link Date}增加某天数后的Date类型日期** @param d Date* @param amountToAdd 天数增加值* @return Date*/public static Date plusDays(Date d, long amountT oAdd) {return toDate(plusDays(toLocalDateTime(d), amountToAdd));}public static LocalDateTime plusDays(LocalDateTime ldt, long amountT oAdd) {return ldt.plusDays(amountToAdd);}/***6、减少天数后的日期** @param date 起点日期(date/string)* @param daysCount 减少的天数* @return*/public static <T> Date sub(T date, int daysCount) { DateTime dt = new DateTime(date);return dt.minusDays(daysCount).toDate();}/*** 7、增加月数后的日期** @param date 起点日期(date/string)* @param months 增加月数* @return*/public static <T> Date addMonths(T date, int months) { DateTime dt = new DateTime(date);return dt.plusMonths(months).toDate();}/***/8、减少月数后的日期** @param date 起点日期(date/string)* @param months 减少的月数* @return*/public static <T> Date subMonths(T date, int months) {DateTime dt = new DateTime(date);return dt.minusMonths(months).toDate();}/***/9、减少年数后的日期** @param date 起点日期(date/string)* @param years 减少的年数* @return*/public static <T> Date subYears(T date, int years) {DateTime dt = new DateTime(date);return dt.minusYears(years).toDate();}/*** 10、计算月份差* @param lastRepaymentDate* @param fundLoanDate* @return*/public static int getMonthParse(String lastRepaymentDate, String fundLoanDate) throws ParseException {SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");Calendar bef = Calendar.getInstance();Calendar aft = Calendar.getInstance();bef.setTime(sdf.parse(fundLoanDate));aft.setTime(sdf.parse(lastRepaymentDate));int result = aft.get(Calendar.MONTH) - bef.get(Calendar.MONTH);int month = (aft.get(Calendar.YEAR) - bef.get(Calendar.YEAR))*12;return month+result;}/*** 11、计算两个日期的间隔天数* 目前不对两个日期比较大小,如放错顺序,则结果为负数的天数** @param dateMin 起点日期(date/string)* @param dateMax 结束日期(date/string)* @return*/public static <T> int betweenDays(T dateMin, T dateMax) { LocalDate start = new LocalDate(dateMin);LocalDate end = new LocalDate(dateMax);return Days.daysBetween(start, end).getDays();}/*** 12、计算两个时间的毫秒间隔* 目前不对两个时间参数比较大小,如放错顺序,则结果为负数的毫秒间隔** @param dateMin 起点日期(date/string)* @param dateMax 结束日期(date/string)* @return*/public static <T> long betweenMs(T dateMin, T dateMax) { DateTime start = new DateTime(dateMin);DateTime end = new DateTime(dateMax);return end.getMillis() - start.getMillis();}/*** 13、判断是否为交易日/工作日** @param date 待判断日期(date/string)* @return*/public static <T> boolean isTradeDay(T date) {boolean isTD = false;DateTime dt = new DateTime(date);if (isSpWorkDay(dt) || (!isHoliday(dt) && !isWeekEnd(dt))) { isTD = true;}return isTD;}//14、判断是否是周末*/private static boolean isWeekEnd(DateTime dt) { boolean isWE = false;int wd = dt.dayOfWeek().get();switch (wd) {case 6:case 7:isWE = true;break;default:break;}return isWE;}//15、判断是否为国家法定节假日*/private static boolean isHoliday(DateTime dt) { boolean isHD = false;//TODO:get days from redisList<String> holidayList = new ArrayList<String>();if (holidayList != null) {for (String holiday : holidayList) {if (dt.isEqual(new DateTime(holiday))) {isHD = true;break;}}}return isHD;}//16、判断是否为国家调整后的工作日*/private static boolean isSpWorkDay(DateTime dt) { boolean isSpWD = false;//TODO:get days from redisList<String> spWorkDayList = new ArrayList<String>(); if (spWorkDayList != null) {for (String spWorkDay : spWorkDayList) {if (dt.isEqual(new DateTime(spWorkDay))) {isSpWD = true;break;}}}return isSpWD;}/***/17、获得时间指定时间差值日期* @param: aDate* @param: field 查看 Calendar.MINUTE 、SECOND* @param: diff 时间差* @return:*/public static final Date diffDate(Date aDate, int field, int diff) {Calendar cal = Calendar.getInstance();cal.setTime(aDate);cal.add(field, diff);return cal.getTime();}/*** 18、判断目标时间是否在区间内* @param sDate 开始时间date/string* @param eDate 结束时间date/string* @param cDate 目标时间date/string* @param <T>* @return*/public static <T> boolean isInRange(T sDate, T eDate, T cDate){DateTime dtLow = new DateTime(sDate);DateTime dtHigh = new DateTime(eDate);DateTime dt = new DateTime(cDate);if(dt.getMillis()>=dtLow.getMillis() && dt.getMillis()<=dtHigh.getMillis()){return true;}return false;}public static <T> boolean isInRange(){DateTime now = DateTime.now();return isInRange(now,now,now);}public static <T> boolean isInRange(T sDate, T eDate){DateTime now = DateTime.now();return isInRange(sDate,eDate,now);}/*** 19、获取当前8位系统日期** @return yyyyMMdd*/public static String getCurrentDateStr() {return format(LocalDate.now());}/***/20、获取当前6位系统时间** @return HHmmss*/public static String getCurrentTimeStr() {return format(LocalTime.now());}/***/21、获取当前14位系统日期时间** @return yyyyMMddHHmmss*/public static String getCurrentDateTimeStr() {return format(LocalDateTime.now());}/***/22、按指定格式获取当前系统日期时间** @param pattern pattern* @return 格式化的当前系统日期时间*/public static String getCurrentDateTimeStr(String pattern) { return format(LocalDateTime.now(), pattern);}/***/23、获取字符串start到end天数间隔** @param start 开始日期,YYYYMMDD* @param end 结束日期,YYYYMMDD* @return 天数间隔*/public static long getDaysBetweenDate(String start, String end) {return toLocalDate(start).until(toLocalDate(end), ChronoUnit.DAYS);}/***/24、获取Date日期类型start到end天数间隔** @param start 开始日期* @param end 结束日期* @return 天数间隔*/public static long getDaysBetween(Date start, Date end) {return getDaysBetween(toLocalDate(start), toLocalDate(end));}public static LocalDate toLocalDate(Date d) {return toLocalDateTime(d).toLocalDate();}}时间减法(示例):public static void main(String[] args) throws ParseException { //一、时间减法可以用Calendar对象加法中,把第二个参数换成负数可以时间,这边就不列举了;使用第二种方式做时间减法//1、指定两个Date对象,业务中可以以参数的形式传递,不用new当前时间。

java日期时间转换工具类

java日期时间转换工具类

java⽇期时间转换⼯具类java⽇期时间转换⼯具类1.实现⽇期格式和类型转换2.获得星期,时,分,秒3.⽇期⽐较4.⽣成账号和流⽔号Java代码1. import java.text.SimpleDateFormat;2. import java.util.Calendar;3. import java.util.Date;4. import java.util.regex.Pattern;5.6. /**7. * ⽇期时间转换⼯具类8. */9. public class DateUtil {10.11. public static String FILE_NAME = "MMddHHmmssSSS";12. public static String DEFAULT_PATTERN = "yyyy-MM-dd";13. public static String DIR_PATTERN = "yyyy/MM/dd/";14. public static String TIMESTAMP_PATTERN = "yyyy-MM-dd HH:mm:ss";15. public static String TIMES_PATTERN = "HH:mm:ss";16. public static String NOCHAR_PATTERN = "yyyyMMddHHmmss";17.18. /**19. * 获取当前时间戳20. *21. * @param date22. *23. * @return24. */25. public static String formatDefaultFileName() {26. return formatDateByFormat(new Date(), FILE_NAME);27. }28.29. /**30. * ⽇期转换为字符串31. *32. * @param date33. * ⽇期34. * @param format35. * ⽇期格式36. * @return 指定格式的⽇期字符串37. */38. public static String formatDateByFormat(Date date, String format) {39. String result = "";40. if (date != null) {41. try {42. SimpleDateFormat sdf = new SimpleDateFormat(format);43. result = sdf.format(date);44. } catch (Exception ex) {45. ex.printStackTrace();46. }47. }48. return result;49. }50.51. /**52. * 转换为默认格式(yyyy-MM-dd)的⽇期字符串53. *54. * @param date55. *56. * @return57. */58. public static String formatDefaultDate(Date date) {59. return formatDateByFormat(date, DEFAULT_PATTERN);60. }61.62. /**63. * 转换为⽬录格式(yyyy/MM/dd/)的⽇期字符串64. *65. * @param date66. *67. * @return68. */69. public static String formatDirDate(Date date) {70. return formatDateByFormat(date, DIR_PATTERN);71. }72.73. /**74. * 转换为完整格式(yyyy-MM-dd HH:mm:ss)的⽇期字符串75. *76. * @param date77. *78. * @return79. */80. public static String formatTimesTampDate(Date date) {81. return formatDateByFormat(date, TIMESTAMP_PATTERN);82. }83.84. /**85. * 转换为时分秒格式(HH:mm:ss)的⽇期字符串86. *87. * @param date88. *89. * @return90. */91. public static String formatTimesDate(Date date) {92. return formatDateByFormat(date, TIMES_PATTERN);93. }94.95. /**96. * 转换为时分秒格式(HH:mm:ss)的⽇期字符串97. *98. * @param date99. *100. * @return101. */102. public static String formatNoCharDate(Date date) {103. return formatDateByFormat(date, NOCHAR_PATTERN); 104. }105.106. /**107. * ⽇期格式字符串转换为⽇期对象108. *109. * @param strDate110. * ⽇期格式字符串111. * @param pattern112. * ⽇期对象113. * @return114. */115. public static Date parseDate(String strDate, String pattern) { 116. try {117. SimpleDateFormat format = new SimpleDateFormat(pattern); 118. Date nowDate = format.parse(strDate);119. return nowDate;120. } catch (Exception e) {121. e.printStackTrace();122. }123. return null;124. }125.126. /**127. * 字符串转换为默认格式(yyyy-MM-dd)⽇期对象128. *129. * @param date130. *131. * @return132. *133. * @throws Exception134. */135. public static Date parseDefaultDate(String date) {136. return parseDate(date, DEFAULT_PATTERN);137. }138.139. /**140. * 字符串转换为完整格式(yyyy-MM-dd HH:mm:ss)⽇期对象141. *142. * @param date143. *144. * @return145. *146. * @throws Exception147. */148. public static Date parseTimesTampDate(String date) { 149. return parseDate(date, TIMESTAMP_PATTERN); 150. }151.152. /**153. * 获得当前时间154. *155. * @return156. */157. public static Date getCurrentDate() {158. Calendar calendar = Calendar.getInstance();159. return calendar.getTime();160. }161.162. /**163. * sql Date 转 util Date164. *165. * @param date166. * java.sql.Date⽇期167. * @return java.util.Date168. */169. public static Date parseUtilDate(java.sql.Date date) { 170. return date;171. }172.173. /**174. * util Date 转 sql Date175. *176. * @param date177. * java.sql.Date⽇期178. * @return179. */180. public static java.sql.Date parseSqlDate(Date date) { 181. return new java.sql.Date(date.getTime());182. }183.184. /**185. * 获取年份186. *187. * @param date188. *189. * @return190. */191. public static int getYear(Date date) {192. Calendar c = Calendar.getInstance();193. c.setTime(date);194. return c.get(Calendar.YEAR);195. }196.197. /**198. * 获取⽉份199. *200. * @param date201. *202. * @return203. */204. public static int getMonth(Date date) {205. Calendar c = Calendar.getInstance();206. c.setTime(date);207. return c.get(Calendar.MONTH) + 1;208. }209.210. /**211. * 获取星期212. *213. * @param date214. *215. * @return216. */217. public static int getWeek(Date date) {218. Calendar c = Calendar.getInstance();219. c.setTime(date);220. int dayOfWeek = c.get(Calendar.DAY_OF_WEEK); 221. dayOfWeek = dayOfWeek - 1;222. if (dayOfWeek == 0) {223. dayOfWeek = 7;224. }225. return dayOfWeek;226. }227.228. /**229. * 获取⽇期(多少号)230. *231. * @param date232. *233. * @return234. */235. public static int getDay(Date date) {236. Calendar c = Calendar.getInstance();237. c.setTime(date);238. return c.get(Calendar.DAY_OF_MONTH);239. }240.241. /**242. * 获取当前时间(⼩时)243. *244. * @param date245. *246. * @return247. */248. public static int getHour(Date date) {249. Calendar c = Calendar.getInstance();250. c.setTime(date);251. return c.get(Calendar.HOUR_OF_DAY);252. }253.254. /**255. * 获取当前时间(分)256. *257. * @param date258. *259. * @return260. */261. public static int getMinute(Date date) {262. Calendar c = Calendar.getInstance();263. c.setTime(date);264. return c.get(Calendar.MINUTE);265. }266.267. /**268. * 获取当前时间(秒)269. *270. * @param date271. *272. * @return273. */274. public static int getSecond(Date date) {275. Calendar c = Calendar.getInstance();276. c.setTime(date);277. return c.get(Calendar.SECOND);278. }279.280. /**281. * 获取当前毫秒282. *283. * @param date284. *285. * @return286. */287. public static long getMillis(Date date) {288. Calendar c = Calendar.getInstance();289. c.setTime(date);290. return c.getTimeInMillis();291. }292.293. /**294. * ⽇期增加295. *296. * @param date297. * Date298. *299. * @param day300. * int301. *302. * @return Date303. */304. public static Date addDate(Date date, int day) {305. java.util.Calendar c = java.util.Calendar.getInstance();306. c.setTimeInMillis(getMillis(date) + ((long) day) * 24 * 3600 * 1000); 307. return c.getTime();308. }309.310. /**311. * ⽇期相减(返回天数)312. *313. * @param date314. * Date315. *316. * @param date1317. * Date318. *319. * @return int 相差的天数320. */321. public static int diffDate(Date date, Date date1) {322. return (int) ((getMillis(date) - getMillis(date1)) / (24 * 3600 * 1000)); 323. }324.325. /**326. * ⽇期相减(返回秒值)327. *328. * @param date329. * Date330. * @param date1331. * Date332. * @return int333. * @author334. */335. public static Long diffDateTime(Date date, Date date1) {336. return (Long) ((getMillis(date) - getMillis(date1)) / 1000);337. }338.339. private static String[] randomValues = new String[] { "0", "1", "2", "3", 340. "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g",341. "h", "i", "j", "k", "l", "m", "n", "u", "t", "s", "o", "x", "v",342. "p", "q", "r", "w", "y", "z" };343.344. public static String getRandomNumber(int lenght) {345. StringBuffer str = new StringBuffer();346. for (int i = 0; i < lenght; i++) {347. Double number = Math.random() * (randomValues.length - 1); 348. str.append(randomValues[number.intValue()]);349. }350. return str.toString();351. }352.353. /**354. * ⽣成账号355. *356. * @param acount357. * @return358. */359. public static String nextAcounnt(String acount) {360. String newAcc = "";361. if (Integer.parseInt(acount) < 10000) {362. Integer newAc = Integer.parseInt(acount) + 1;363. if (newAc < 1000) {364. int count = String.valueOf(newAc).length();365. if (count == 1) {366. newAcc = "000" + newAc;367. } else if (count == 2) {368. newAcc = "00" + newAc;369. } else if (count == 3) {370. newAcc = "0" + newAc;371. }372. } else {373. newAcc = String.valueOf(newAc);374. }375. } else {376. newAcc = acount;377. }378. return newAcc;379. }380.381. public static boolean isNumeric1(String str) {382. if (str != null && !"".equals(str) && str.length()<=9) {383. Pattern pattern = pile("[0-9]*");384. return pattern.matcher(str).matches();385. } else {386. return false;387. }388. }389.390. /**391. * ⽣成流⽔号392. *393. * @param t394. * 流⽔号位数395. * @return 流⽔号396. */397. public static String getSequenceNumber(int t) {398. Date d = new Date();399. SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddhhmmss"); 400. String str = sdf.format(d);401. String haomiao = String.valueOf(System.nanoTime());402. str = str + haomiao.substring(haomiao.length() - 6, haomiao.length()); 403. return str.substring(str.length() - t, str.length());404. }405. }。

Java日期格式化工具类

Java日期格式化工具类

Java⽇期格式化⼯具类import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;/*** ⽇期⼯具类默认使⽤ "yyyy-MM-dd HH:mm:ss" 格式化⽇期**/public final class DateUtils {/*** 英⽂简写(默认)如:2010-12-01*/public static String FORMAT_SHORT = "yyyy-MM-dd";/*** 英⽂全称如:2010-12-01 23:15:06*/public static String FORMAT_LONG = "yyyy-MM-dd HH:mm:ss";/*** 精确到毫秒的完整时间如:yyyy-MM-dd HH:mm:ss.S*/public static String FORMAT_FULL = "yyyy-MM-dd HH:mm:ss.S";/*** 中⽂简写如:2010年12⽉01⽇*/public static String FORMAT_SHORT_CN = "yyyy年MM⽉dd";/*** 中⽂全称如:2010年12⽉01⽇ 23时15分06秒*/public static String FORMAT_LONG_CN = "yyyy年MM⽉dd⽇ HH时mm分ss秒";/*** 精确到毫秒的完整中⽂时间*/public static String FORMAT_FULL_CN = "yyyy年MM⽉dd⽇ HH时mm分ss秒SSS毫秒";/*** 获得默认的 date pattern*/public static String getDatePattern() {return FORMAT_LONG;}/*** 根据预设格式返回当前⽇期** @return*/public static String getNow() {return format(new Date());}/*** 根据⽤户格式返回当前⽇期** @param format* @return*/public static String getNow(String format) {return format(new Date(), format);}/*** 使⽤预设格式格式化⽇期** @param date* @return*/public static String format(Date date) {return format(date, getDatePattern());}/*** 使⽤⽤户格式格式化⽇期** @param date* ⽇期* @param pattern* ⽇期格式* @return*/public static String format(Date date, String pattern) {String returnValue = "";if (date != null) {SimpleDateFormat df = new SimpleDateFormat(pattern); returnValue = df.format(date);}return (returnValue);}/*** 使⽤预设格式提取字符串⽇期** @param strDate* ⽇期字符串* @return*/public static Date parse(String strDate) {return parse(strDate, getDatePattern());}/*** 使⽤⽤户格式提取字符串⽇期** @param strDate* ⽇期字符串* @param pattern* ⽇期格式* @return*/public static Date parse(String strDate, String pattern) {SimpleDateFormat df = new SimpleDateFormat(pattern);try {return df.parse(strDate);} catch (ParseException e) {e.printStackTrace();return null;}}/*** 在⽇期上增加数个整⽉** @param date* ⽇期* @param n* 要增加的⽉数* @return*/public static Date addMonth(Date date, int n) {Calendar cal = Calendar.getInstance();cal.setTime(date);cal.add(Calendar.MONTH, n);return cal.getTime();}/*** 在⽇期上增加天数** @param date* ⽇期* @param n* 要增加的天数* @return*/public static Date addDay(Date date, int n) {Calendar cal = Calendar.getInstance();cal.setTime(date);cal.add(Calendar.DATE, n);return cal.getTime();}/*** 获取时间戳*/public static String getTimeString() {SimpleDateFormat df = new SimpleDateFormat(FORMAT_FULL); Calendar calendar = Calendar.getInstance();return df.format(calendar.getTime());}/*** 获取⽇期年份** @param date* ⽇期* @return*/public static String getYear(Date date) {return format(date).substring(0, 4);}/*** 按默认格式的字符串距离今天的天数** @param date* ⽇期字符串* @return*/public static int countDays(String date) {long t = Calendar.getInstance().getTime().getTime();Calendar c = Calendar.getInstance();c.setTime(parse(date));long t1 = c.getTime().getTime();return (int) (t / 1000 - t1 / 1000) / 3600 / 24;}/*** 按⽤户格式字符串距离今天的天数** @param date* ⽇期字符串* @param format* ⽇期格式* @return*/public static int countDays(String date, String format) {long t = Calendar.getInstance().getTime().getTime();Calendar c = Calendar.getInstance();c.setTime(parse(date, format));long t1 = c.getTime().getTime();return (int) (t / 1000 - t1 / 1000) / 3600 / 24;}}。

详解Java关于时间格式化的方法

详解Java关于时间格式化的方法

详解Java关于时间格式化的⽅法⼀般从数据库获取的时间或⽇期时间格式化为date或者datetime,为了⽅便前端渲染,API接⼝返回的时候需要对⽇期进⾏格式化转换,通常会⽤到SimpleDateFormat⼯具处理。

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");String time = dateFormat.format(new Date());如果⼀个DTO类⾥⾯有很多关于时间字段需要格式化,就会降低开发效率,产⽣很多重复臃肿的代码。

并且有的项⽬⽤Date,有的项⽬会⽤LocalDateTime⽽此时如果能将时间格式统⼀配置,就可以省下更多时间专注于业务开发了。

接下来介绍SpringBoot中常⽤的对时间或⽇期处理的⽅式⼀、@JsonFormat 注解JsonFormat注解是jackson包⾥⾯的⼀个注解,需要加上依赖<!-- https:///artifact/com.fasterxml.jackson.core/jackson-core --><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.11.2</version></dependency>@JsonFormat注解需要⽤在实体类的时间字段上,对应的字段才能进⾏格式化。

import com.fasterxml.jackson.annotation.JsonFormat;import lombok.Data;import java.time.LocalDateTime;import java.util.Date;@Datapublic class TestDTO {@JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd")private LocalDateTime createTime;@JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")private Date updateTime;}public TestDTO get(){TestDTO testDTO = new TestDTO();testDTO.setLocalDateTime(LocalDateTime.now());testDTO.setDate(new Date());return testDTO;}如下所⽰还有⼀种可以全局定义的⼆、@JsonComponent 注解(全局)配置类@JsonComponentpublic class DateFormatConfig {@Value("${spring.jackson.date-format:yyyy-MM-dd HH:mm:ss}")private String pattern;// date 类型全局时间格式化@Beanpublic Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilder() {return builder -> {TimeZone tz = TimeZone.getTimeZone("UTC");DateFormat df = new SimpleDateFormat(pattern);df.setTimeZone(tz);builder.failOnEmptyBeans(false).failOnUnknownProperties(false).featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS).dateFormat(df);};}// LocalDate 类型全局时间格式化@Beanpublic LocalDateTimeSerializer localDateTimeDeserializer() {return new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(pattern));}@Beanpublic Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() { return builder -> builder.serializerByType(LocalDateTime.class, localDateTimeDeserializer()); }}这样我们就不⽤加注解了,也可以实现格式化@JsonComponentpublic class DateFormatConfig {@Value("${spring.jackson.date-format:yyyy-MM-dd HH:mm:ss}")private String pattern;// date 类型全局时间格式化@Beanpublic Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilder() {return builder -> {TimeZone tz = TimeZone.getTimeZone("UTC");DateFormat df = new SimpleDateFormat(pattern);df.setTimeZone(tz);builder.failOnEmptyBeans(false).failOnUnknownProperties(false).featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS).dateFormat(df);};}// LocalDate 类型全局时间格式化@Beanpublic LocalDateTimeSerializer localDateTimeDeserializer() {return new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(pattern));}@Beanpublic Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() { return builder -> builder.serializerByType(LocalDateTime.class, localDateTimeDeserializer()); }}到此这篇关于详解Java关于时间格式化的⽅法的⽂章就介绍到这了,更多相关Java 时间格式化内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。

Java语言编写的DateUtil时间工具类

Java语言编写的DateUtil时间工具类

Java语⾔编写的DateUtil时间⼯具类Java语⾔编写的DateUtil时间⼯具类import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Calendar;import java.util.Date;import java.util.List;public class DateUtil {//时间格式public static final String PATTERN_YYYYMMDDHH = "yyyyMMddHH";public static final String PATTERN_YYYY_MM_DDHHMM = "yyyy-MM-dd HH:mm";/**** 从yyyy-MM-dd HH:mm格式转成yyyyMMddHH格式* @param dateStr* @return*/public static String formatStr(String dateStr,String opattern,String npattern){SimpleDateFormat simpleDateFormat = new SimpleDateFormat(opattern);try {Date date = simpleDateFormat.parse(dateStr);simpleDateFormat = new SimpleDateFormat(npattern);return simpleDateFormat.format(date);} catch (ParseException e) {e.printStackTrace();}return null;}/**** 获取指定⽇期的凌晨* @return*/public static Date toDayStartHour(Date date){Calendar calendar = Calendar.getInstance();calendar.setTime(date);calendar.set(Calendar.HOUR_OF_DAY, 0);calendar.set(Calendar.MINUTE, 0);calendar.set(Calendar.SECOND, 0);calendar.set(LISECOND, 0);Date start = calendar.getTime();return start;}/**** 时间增加N分钟* @param date* @param minutes* @return*/public static Date addDateMinutes(Date date,int minutes){Calendar calendar = Calendar.getInstance();calendar.setTime(date);calendar.add(Calendar.MINUTE, minutes);// 24⼩时制date = calendar.getTime();return date;}/**** 时间递增N⼩时* @param hour* @return*/public static Date addDateHour(Date date,int hour){Calendar calendar = Calendar.getInstance();calendar.setTime(date);calendar.add(Calendar.HOUR, hour);// 24⼩时制date = calendar.getTime();return date;}/**** 获取时间菜单* @return*/public static List<Date> getDateMenus(){//定义⼀个List<Date>集合,存储所有时间段List<Date> dates = getDates(12);//判断当前时间属于哪个时间范围Date now = new Date();for (Date cdate : dates) {//开始时间<=当前时间<开始时间+2⼩时if(cdate.getTime()<=now.getTime() && now.getTime()<addDateHour(cdate,2).getTime()){now = cdate;break;}}//当前需要显⽰的时间菜单List<Date> dateMenus = new ArrayList<Date>();for (int i = 0; i <5 ; i++) {dateMenus.add(addDateHour(now,i*2));}return dateMenus;}/**** 指定时间往后N个时间间隔* @param hours* @return*/public static List<Date> getDates(int hours) {List<Date> dates = new ArrayList<Date>();//循环12次Date date = toDayStartHour(new Date()); //凌晨for (int i = 0; i <hours ; i++) {//每次递增2⼩时,将每次递增的时间存⼊到List<Date>集合中dates.add(addDateHour(date,i*2));}return dates;}/**** 时间转成yyyyMMddHH* @param date* @param pattern* @return*/public static String data2str(Date date, String pattern){SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);return simpleDateFormat.format(date);}public static void main(String[] args) {List<Date> dateMenus = DateUtil.getDateMenus();for (Date dateMenu : dateMenus) {System.out.println(DateUtil.data2str(dateMenu,DateUtil.PATTERN_YYYYMMDDHH));System.out.println(DateUtil.data2str(DateUtil.addDateHour(dateMenu,2),DateUtil.PATTERN_YYYYMMDDHH)); System.out.println("*************");}}}。

Java常用工具类

Java常用工具类

Java是一种面向对象的编程语言,被广泛应用于软件开发领域。

在Java的开发过程中,经常会使用到各种工具类来简化编程任务并提高开发效率。

本文将介绍一些常用的Java工具类,并阐述它们在实际开发中的作用。

1.StringUtils:这是一个非常常用的工具类,提供了一系列静态方法,可以方便地对字符串进行操作。

例如,它提供了isEmpty()方法用于判断字符串是否为空,isBlank()方法用于判断字符串是否为空白,trim()方法用于删除字符串两端的空白字符等。

使用StringUtils,可以避免在代码中重复编写类似的字符串处理代码,从而提高效率。

2.DateUtils:这个工具类提供了很多方便的方法,用于操作日期和时间。

它包括格式化日期、解析日期、计算日期之间的差值等功能。

例如,可以使用DateUtils的parse()方法将字符串解析为日期对象,可以使用format()方法将日期对象格式化为指定格式的字符串。

在编写处理日期相关问题的代码时,使用DateUtils可以简化代码逻辑,提高开发效率。

3.FileUtils:这个工具类提供了一系列静态方法,用于操作文件和目录。

它可以实现文件的读取、写入、复制、删除等功能,并且提供了很多实用的方法,如获取文件大小、读取文件内容、计算文件或目录的校验和等。

使用FileUtils,可以方便地进行文件操作,避免编写大量繁琐的文件处理代码。

4.MathUtils:这个工具类提供了一系列数学计算相关的方法。

它包括求绝对值、取最大/最小值、取整、四舍五入等功能。

使用MathUtils可以避免手动编写这些常用的数学计算代码,提高开发效率。

5.CollectionUtils:这个工具类提供了一系列操作集合的方法。

它可以对集合的元素进行过滤、转换、排序等操作,并提供了一些便捷的方法,如合并两个集合、取交集/差集等。

使用CollectionUtils可以简化对集合的操作,提高代码可读性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

做成方法
import java.util.*;
import java.text.*;
import java.util.Calendar;
public class VeDate {
/**
* 获取现在时间
*
* @return 返回时间类型 yyyy-MM-dd HH:mm:ss
return dateString;
}
/**
* 获取现在时间
*
* @return 返回短时间字符串格式yyyy-MM-dd
*/
public static String getStringDateShort() {
Date currentTime = new Date();
ParsePosition pos = new ParsePosition(0);
Date strtodate = formatter.parse(strDate, pos);
return strtodate;
}
/**
* 将长时间格式时间转换为字符串 yyyy-MM-dd HH:mm:ss
return dateString;
}
/**
* 得到现在小时
*/
public static String getHour() {
Date currentTime = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
e.printStackTrace();
}
/**
* 获取现在时间
*
* @return返回字符串格式 yyyy-MM-dd HH:mm:ss
*/
public static String getStringDate() {
*
* @param dateDate
* @return
*/
public static String dateToStrLong(java.util.Date dateDate) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateString = formatter.format(currentTime);
String hour;
hour = dateString.substring(11, 13);
return hour;
}
/**
* 得到现在分钟
return dateString;
}
/**
* 将短时间格式字符串转换为时间 yyyy-MM-dd
*
* @param strDate
* @return
*/
public static Date strToDate(String strDate) {
}
/**
* 提取一个月中的最后一天
*
* @param day
* @return
*/
public static Date getLastDate(long day) {
Date date = new Date();
long date_3_hm = date.getTime() - 3600000 * 34 * day;
*
* @param sformat
* yyyyMMddhhmmss
* @return
*/
public static String getUserDate(String sformat) {
Date currentTime = new Date();
* @return 返回时间类型 yyyy-MM-dd HH:mm:ss
*/
public Date getNowDate();
/**
* 获取现在时间
*
* @return返回短时间格式 yyyy-MM-dd
*/
DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");

import java.text.*;
import java.util.Calendar;
/**
* Java时间格式转换大全
* @author Aren
*/
public interface DateFormatUtils {
/**
* 获取现在时间
*
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
ParsePosition pos = new ParsePosition(0);
Date strtodate = formatter.parse(strDate, pos);
DateFormat format 2= new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
Date date = null;
String str = null;
// String转Date
str = "2007-1-18";
try {
date = format1.parse(str);
data = format2.parse(str);
} catch (ParseException e) {
String dateString = formatter.format(currentTime);
String min;
min = dateString.substring(14, 16);
return min;
}
/**
* 根据用户传入的时间表示格式,返回当前时间的格式 如果是yyyyMMdd,注意字母y不能大写。
Date currentTime = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd HHmmss");
String dateString = formatter.format(currentTime);
Date date_3_hm_date = new Date(date_3_hm);
return date_3_hm_date;
}
/**
* 得到现在时间
*
* @return 字符串 yyyyMMdd HHmmss
*/
public static String getStringToday() {
return strtodate;
}
/**
* 得到现在时间
*
* @return
*/
public static Date getNow() {
Date currentTime = new Date();
return currentTime;
* @return
*/
public static String dateToStr(java.util.Date dateDate) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String dateString = formatter.format(dateDate);
*
* @param strDate
* @return
*/
public static Date strToDateLong(String strDate) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
*/
public static Date getNowDate() {
Date currentTime = new Date();
Date currentTime = new Date();
String dateString = formatter.format(currentTime);
return dateString;
}
/**
* 将长时间格式字符串转换为时间 yyyy-MM-dd HH:mm:ss
String dateString = formatter.format(dateDate);
return dateString;
}
/**
* 将短时间格式时间转换为字符串 yyyy-MM-dd
*
* @param dateDate
* @param k
/**
* 获取时间 小时:分;秒 HH:mm:ss
*
* @return
*
public static String getTimeShort() {
SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");
*
* @return
相关文档
最新文档