日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Java中joda日期格式化工具的使用示例

瀏覽:16日期:2022-08-18 15:09:18
1.基本介紹

Java自帶日期格式化工具DateFormat ,但是DateFormat 的所有實現,包括 SimpleDateFormat 都不是線程安全的,因此你不應該在多線程序中使用,除非是在對外線程安全的環境中使用,如 將 SimpleDateFormat 限制在 ThreadLocal 中。如果你不這么做,在解析或者格式化日期的時候,可能會獲取到一個不正確的結果。因此,從日期、時間處理的所有實踐來說,我強力推薦使用joda-time 庫。

2.joda-time的使用引入依賴

<dependency> <groupId>joda-time</groupId> <artifactId>joda-time</artifactId> <version>2.10.5</version></dependency>編寫測試類

public class DateUtils { public static final long SECOND = 1000; // 1秒 java已毫秒為單位 public static final long MINUTE = SECOND * 60; // 一分鐘 public static final long HOUR = MINUTE * 60; // 一小時 public static final long DAY = HOUR * 24; // 一天 public static final long WEEK = DAY * 7; // 一周 public static final long YEAR = DAY * 365; // 一年 public static final String FORMAT_TIME = 'yyyy-MM-dd HH:mm:ss'; // 默認時間格式 public static final String FORMAT_TIME_MINUTE = 'yyyy-MM-dd HH:mm'; // 默認時間格式 public static final String FORTER_DATE = 'yyyy-MM-dd'; // 默認日期格式 private static final Map<Integer, String> WEEK_DAY = new HashMap<Integer, String>(); static { WEEK_DAY.put(7, '星期六'); WEEK_DAY.put(1, '星期天'); WEEK_DAY.put(2, '星期一'); WEEK_DAY.put(3, '星期二'); WEEK_DAY.put(4, '星期三'); WEEK_DAY.put(5, '星期四'); WEEK_DAY.put(6, '星期五'); } /** * 獲取當前系統時間 * * @return yyyy-MM-dd HH:mm:ss */ public static String getCurrentTime() { DateTime dt = new DateTime(); String time = dt.toString(FORMAT_TIME); return time; } /** * 獲取系統當前時間按照指定格式返回 * * @param pattern * yyyy/MM/dd hh:mm:a * @return */ public static String getCurrentTimePattern(String pattern) { DateTime dt = new DateTime(); String time = dt.toString(pattern); return time; } /** * 獲取當前日期 * * @return */ public static String getCurrentDate() { DateTime dt = new DateTime(); String date = dt.toString(FORTER_DATE); return date; } /** * 獲取當前日期按照指定格式 * * @param pattern * @return */ public static String getCurrentDatePattern(String pattern) { DateTime dt = new DateTime(); String date = dt.toString(pattern); return date; } /** * 按照時區轉換時間 * * @param date * @param timeZone * 時區 * @param parrten * @return */ @Nullable public static String format(Date date, TimeZone timeZone, String parrten) { if (date == null) { return null; } SimpleDateFormat sdf = new SimpleDateFormat(parrten); sdf.setTimeZone(timeZone); return sdf.format(date); } /** * 獲取指定時間 * * @param year * 年 * @param month * 月 * @param day * 天 * @param hour * 小時 * @param minute * 分鐘 * @param seconds * 秒 * @return yyyy-MM-dd HH:mm:ss */ public static String getPointTime(Integer year, Integer month, Integer day, Integer hour, Integer minute, Integer seconds) { DateTime dt = new DateTime(year, month, day, hour, minute, seconds); String date = dt.toString(FORMAT_TIME); return date; } /** * * @param year * 年 * @param month * 月 * @param day * 天 * @param hour * 小時 * @param minute * 分鐘 * @param seconds * 秒 * @param parrten * 自定義格式 * @return parrten */ public static String getPointTimePattern(Integer year, Integer month, Integer day, Integer hour, Integer minute, Integer seconds, String parrten) { DateTime dt = new DateTime(year, month, day, hour, minute, seconds); String date = dt.toString(parrten); return date; } /** * 獲取指定日期 * * @param year * @param month * @param day * @return */ public static String getPointDate(Integer year, Integer month, Integer day) { LocalDate dt = new LocalDate(year, month, day); String date = dt.toString(FORTER_DATE); return date; } /** * 獲取指定日期 返回指定格式 * * @param year * @param month * @param day * @param parrten * @return */ public static String getPointDatParrten(Integer year, Integer month, Integer day, String parrten) { LocalDate dt = new LocalDate(year, month, day); String date = dt.toString(parrten); return date; } /** * 獲取當前是一周星期幾 * * @return */ public static String getWeek() { DateTime dts = new DateTime(); String week = null; switch (dts.getDayOfWeek()) { case DateTimeConstants.SUNDAY: week = '星期日'; break; case DateTimeConstants.MONDAY: week = '星期一'; break; case DateTimeConstants.TUESDAY: week = '星期二'; break; case DateTimeConstants.WEDNESDAY: week = '星期三'; break; case DateTimeConstants.THURSDAY: week = '星期四'; break; case DateTimeConstants.FRIDAY: week = '星期五'; break; case DateTimeConstants.SATURDAY: week = '星期六'; default: break; } return week; } /** * 獲取指定時間是一周的星期幾 * * @param year * @param month * @param day * @return */ public static String getWeekPoint(Integer year, Integer month, Integer day) { LocalDate dts = new LocalDate(year, month, day); String week = null; switch (dts.getDayOfWeek()) { case DateTimeConstants.SUNDAY: week = '星期日'; break; case DateTimeConstants.MONDAY: week = '星期一'; break; case DateTimeConstants.TUESDAY: week = '星期二'; break; case DateTimeConstants.WEDNESDAY: week = '星期三'; break; case DateTimeConstants.THURSDAY: week = '星期四'; break; case DateTimeConstants.FRIDAY: week = '星期五'; break; case DateTimeConstants.SATURDAY: week = '星期六'; break; default: break; } return week; } /** * 格式化日期 * * @param date * @return yyyy-MM-dd HH:mm:ss */ @Nullable public static String format(Date date) { if (date == null) { return null; } SimpleDateFormat format = new SimpleDateFormat(FORMAT_TIME); return format.format(date); } /** * 格式化日期字符串 * * @param date * 日期 * @param pattern * 日期格式 * @return */ @Nullable public static String format(Date date, String pattern) { if (date == null) { return null; } SimpleDateFormat format = new SimpleDateFormat(pattern); return format.format(date); } /** * 解析日期 * * @param date * 日期字符串 * @param pattern * 日期格式 * @return */ @Nullable public static Date parse(String date, String pattern) { if (date == null) { return null; } Date resultDate = null; try { resultDate = new SimpleDateFormat(pattern).parse(date); } catch (ParseException e) { } return resultDate; } /** * 解析日期yyyy-MM-dd HH:mm:ss * * @param date * 日期字符串 * @return */ @Nullable public static Date parse(String date) { if (date == null) { return null; } try { return new SimpleDateFormat(FORMAT_TIME).parse(date); } catch (ParseException e) { return null; } } /** * 解析日期 yyyy-MM-dd HH:mm:ss * * @param timestamp * @return */ public static String format(Long timestamp, String pattern) { String dateStr = ''; if (null == timestamp || timestamp.longValue() < 0) { return dateStr; } try { Date date = new Date(timestamp); SimpleDateFormat format = new SimpleDateFormat(pattern); dateStr = format.format(date); } catch (Exception e) { // ignore } return dateStr; } /** * 解析日期 yyyy-MM-dd HH:mm:ss * * @param timestamp * @return */ public static String format(Long timestamp) { String dateStr = ''; if (null == timestamp || timestamp.longValue() < 0) { return dateStr; } try { Date date = new Date(timestamp); SimpleDateFormat format = new SimpleDateFormat(FORMAT_TIME); dateStr = format.format(date); } catch (Exception e) { // ignore } return dateStr; } /** * 獲取當前時間前幾天時間,按指定格式返回 * * @param days * @return */ public static String forwardDay(Integer days, String format) { DateTime dt = new DateTime(); DateTime y = dt.minusDays(days); return y.toString(format); } /** * 獲取當前時間前幾天時間 * * @param days * @return */ public static Date forwardDay(Integer days) { DateTime dt = new DateTime(); DateTime y = dt.minusDays(days); return y.toDate(); } /** * 獲取指定時間之后或者之前的某一天00:00:00 默認返回當天 * * @param days * @return */ public static Date day00(Integer days, String date, String zimeZone) throws Throwable { DateTime dt; TimeZone timeZone; try { if (isBlank(zimeZone)) {timeZone = TimeZone.getDefault(); } else {timeZone = TimeZone.getTimeZone(zimeZone); } if (isBlank(date)) {dt = new DateTime().withZone(DateTimeZone.forTimeZone(timeZone)).toLocalDateTime().toDateTime(); } else {dt = new DateTime(date).withZone(DateTimeZone.forTimeZone(timeZone)).toLocalDateTime().toDateTime(); } } catch (Exception e) { throw new Throwable(e); } DateTime y = dt.minusDays(days).withHourOfDay(0).withMinuteOfHour(0).withSecondOfMinute(0); return y.toDate(); } /** * 獲取指定時間之后或者之前的某一天23:59:59 默認返回當天 * * @param days * 偏移量 * @return */ public static Date day59(Integer days, String date, String zimeZone) throws Throwable { DateTime dt; TimeZone timeZone; try { if (isBlank(zimeZone)) {timeZone = TimeZone.getDefault(); } else {timeZone = TimeZone.getTimeZone(zimeZone); } if (isBlank(date)) {dt = new DateTime().withZone(DateTimeZone.forTimeZone(timeZone)).toLocalDateTime().toDateTime(); } else {dt = new DateTime(date).withZone(DateTimeZone.forTimeZone(timeZone)).toLocalDateTime().toDateTime(); } } catch (Exception e) { throw new Throwable(e); } DateTime y = dt.minusDays(days).withHourOfDay(23).withMinuteOfHour(59).withSecondOfMinute(59); return y.toDate(); } /** * 計算兩個時間相差多少天 * * @param startDate * @param endDate * @return */ @Nullable public static Integer diffDay(Date startDate, Date endDate) { if (startDate == null || endDate == null) { return null; } DateTime dt1 = new DateTime(startDate); DateTime dt2 = new DateTime(endDate); int day = Days.daysBetween(dt1, dt2).getDays(); return Math.abs(day); } /** * 獲取某月之前,之后某一個月最后一天,24:59:59 * * @return */ public static Date lastDay(Date date, Integer month) { DateTime dt1; if (month == null) { month = 0; } if (date == null) { dt1 = new DateTime().minusMonths(month); } else { dt1 = new DateTime(date).minusMonths(month); } DateTime lastDay = dt1.dayOfMonth().withMaximumValue().withHourOfDay(23).withMinuteOfHour(59).withSecondOfMinute(59); return lastDay.toDate(); } /** * 獲取某月月之前,之后某一個月第一天,00:00:00 * * @return */ public static Date firstDay(Date date, Integer month) { DateTime dt1; if (month == null) { month = 0; } if (date == null) { dt1 = new DateTime().minusMonths(month); } else { dt1 = new DateTime(date).minusMonths(month); } DateTime lastDay = dt1.dayOfMonth().withMinimumValue().withHourOfDay(0).withMinuteOfHour(0).withSecondOfMinute(0); return lastDay.toDate(); } public static Date addDay(Date date, int offset) { DateTime dt1; if (date == null) { dt1 = new DateTime().plusDays(offset); return dt1.toDate(); } dt1 = new DateTime(date).plusDays(offset); return dt1.toDate(); } /** * 傳入日期時間與當前系統日期時間的比較, 若日期相同,則根據時分秒來返回 , 否則返回具體日期 * * @return 日期或者 xx小時前||xx分鐘前||xx秒前 */ @Nullable public static String getNewUpdateDateString(Date now, Date createDate) { if (now == null || createDate == null) { return null; } Long time = (now.getTime() - createDate.getTime()); if (time > (24 * 60 * 60 * 1000)) { return time / (24 * 60 * 60 * 1000) + '天前'; } else if (time > (60 * 60 * 1000)) { return time / (60 * 60 * 1000) + '小時前'; } else if (time > (60 * 1000)) { return time / (60 * 1000) + '分鐘前'; } else if (time >= 1000) { return time / 1000 + '秒前'; } return '剛剛'; } /** * * @Title: isBlank * @Description: TODO(判斷字符串是否為空或長度為0 或由空格組成) * @param @param str * @param @return 設定文件 * @return boolean 返回類型 * @throws */ public static boolean isBlank(String str) { return (str == null || str.trim().length() == 0); } public static void main(String[] args) throws Throwable { System.out.println(lastDay(new Date(),2)); System.out.println(firstDay(null,0)); TimeZone zone1=TimeZone.getTimeZone('GMT+8'); TimeZone zone2=TimeZone.getTimeZone('GMT-5'); System.out.println(format(new Date(),zone1,FORMAT_TIME)); System.out.println(format(new Date(),zone2,FORMAT_TIME)); System.out.println(format(day00(0,'2017-5-11','GMT+0'))); System.out.println(format(day00(0,'2017-5-11','GMT+8'))); System.out.println(format(day00(0,'2017-5-11','GMT-8'))); Date date1 =parse('2017-05-11 17:53:52'); System.out.println(diffDay(date1,new Date())); DateTime dateTime = new DateTime().withDayOfWeek(1); DateTime dateTime1 = new DateTime().withDayOfWeek(7).withTime(0, 0, 0, 0); System.out.println(format(dateTime.toDate())); System.out.println(format(dateTime1.toDate())); System.out.println(format(new Date(), 'MM/dd')); }}優點

1. 易于使用:Calendar讓獲取'正常的'的日期變得很困難,使它沒辦法提供簡單的方法,而Joda-Time能夠 直接進行訪問域并且索引值1就是代表January。2. 易于擴展:JDK支持多日歷系統是通過Calendar的子類來實現,這樣就顯示的非常笨重而且事實 上要實現其它日歷系統是很困難的。Joda-Time支持多日歷系統是通過基于Chronology類的插件體系來實現。

3. 提供一組完整的功能:它打算提供 所有關系到date-time計算的功能.Joda-Time當前支持8種日歷系統,而且在將來還會繼續添加,有著比JDK Calendar更好的整體性能等等。

以上就是Java中joda日期格式化工具的使用示例的詳細內容,更多關于java 日期格式化工具的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品久久久久久模特| 国产美女精品视频免费播放软件| 国产精品伦一区二区| 国产伦精品一区二区三区千人斩| 日韩精品亚洲一区二区三区免费| 日韩中文字幕无砖| 国产日韩三级| 丰满少妇一区| 99国产精品一区二区| 女人天堂亚洲aⅴ在线观看| 国产亚洲毛片| 日韩精品第二页| 国产精品久久久亚洲一区| 国产96在线亚洲| 亚洲午夜91| 丝瓜av网站精品一区二区| 亚洲男人在线| 国产精品porn| 久久久久美女| 亚洲日本免费电影| 精品国产欧美日韩一区二区三区| 国产亚洲一区二区手机在线观看| 91精品成人| 日本不卡中文字幕| av资源中文在线天堂| 91精品1区| 国产精品亚洲二区| 另类中文字幕国产精品| 日韩精品一二三| 国产激情久久| 1000部精品久久久久久久久| 亚洲久久一区| 五月激情久久| 一本综合精品| 欧美国产偷国产精品三区| 91久久视频| 国产精品日本一区二区三区在线| 中国字幕a在线看韩国电影| 国产一区二区精品| 国内精品美女在线观看| 免费看日韩精品| 日本一区二区免费高清| 日韩制服丝袜av| 97国产精品| 日本欧美韩国一区三区| 私拍精品福利视频在线一区| 日本成人中文字幕在线视频| 日韩毛片在线| 国产精品xvideos88| 久久亚洲影院| 日韩精品首页| 国产精品2023| 一区二区91| 蜜臀av免费一区二区三区| 国产精品2区| 亚洲va久久| 黄色成人在线网址| 韩日一区二区| 国产三级一区| 蜜桃视频一区二区| 日韩一区二区三区免费| 日本欧美一区| 在线国产精品一区| 在线一区免费| 韩国精品主播一区二区在线观看 | 成人在线免费观看网站| 久久亚洲风情| 亚洲午夜av| 特黄毛片在线观看| 国产精品久久久久久模特| 美女精品网站| 欧美日韩精品一本二本三本| 日韩av免费大片| 欧美一区网站| 日韩激情视频网站| 久久午夜影视| 亚洲激情av| 国产高清久久| 免费观看不卡av| 日韩精品欧美| 午夜av成人| 日韩高清中文字幕一区二区| 欧美国产美女| 国产福利91精品一区二区| 国产精品视频首页| 国产日韩免费| 日韩一区二区三免费高清在线观看| 亚洲性色视频| 久久国产亚洲精品| 视频福利一区| 免费视频亚洲| 99国内精品| 视频一区免费在线观看| 国产亚洲一区在线| 美日韩精品视频| 水野朝阳av一区二区三区| 亚洲欧美日韩国产| 久久国产福利| 天堂av一区| 国产精品一区亚洲| 精品三级国产| 精品国产午夜肉伦伦影院| 免费一级欧美在线观看视频| 免费一区二区三区在线视频| 国产一区二区三区不卡av| 久久久久久夜| 久久国产精品成人免费观看的软件| 国产99久久| 视频一区国产视频| 日韩av二区在线播放| 国产精品v日韩精品v欧美精品网站| 国产亚洲精品精品国产亚洲综合| 国产私拍福利精品视频二区| 老司机免费视频一区二区| 91视频久久| 一区免费在线| 蜜臀av性久久久久蜜臀aⅴ四虎| 在线观看亚洲精品福利片| 午夜视频一区二区在线观看| 国产剧情一区二区在线观看| 精品国产精品久久一区免费式| 中文在线资源| 亚洲女人av| 国产精品久久久久久久久久久久久久久 | 国产精品视频3p| 国产福利资源一区| 日韩欧美一区二区三区免费观看| japanese国产精品| 日韩av一区二| 亚洲国产成人二区| 国产一区导航| 麻豆一区在线| 精品在线播放| 国产麻豆一区| 亚洲欧美伊人| 国产亚洲久久| 另类中文字幕国产精品| 日韩专区在线视频| 久久精品免费看| 好吊视频一区二区三区四区| 国产欧美自拍| 欧美日韩激情| 久久av超碰| 亚洲作爱视频| 精品一区二区三区在线观看视频| 国内亚洲精品| 久久国产视频网| 精品欧美激情在线观看| 日本99精品| 99视频精品全国免费| 奇米亚洲欧美| 久久免费高清| 欧美日本一区| 激情欧美国产欧美| 你懂的国产精品永久在线| 国产亚洲精品v| 国产成人精品免费视| 亚洲久久一区| 精品欧美激情在线观看| 久久av超碰| 免费欧美在线视频| 日韩一区二区在线免费| 久久狠狠久久| 六月丁香综合| 日韩在线观看不卡| 国产精品mm| 老司机精品久久| 日韩中文欧美| 国产精品极品| 日本在线观看不卡视频| 影视先锋久久| 国产一区二区三区探花| 日韩高清在线观看一区二区| 91成人精品| 日本欧美不卡| 国产精品成人a在线观看| 日韩精品免费视频人成| 精品1区2区3区4区| 免费污视频在线一区| 国产精品a级| 日韩精品视频网站| 久久国产精品久久久久久电车| 亚洲www啪成人一区二区| 久久精品国产久精国产| 国产欧美一区二区精品久久久 | 亚洲精品在线影院| 乱一区二区av| 日本午夜精品| 少妇精品久久久一区二区| 一本色道精品久久一区二区三区| 中文在线中文资源| 成人午夜亚洲| 精品理论电影在线| 国产精品国码视频| 国产日韩高清一区二区三区在线 | 日本在线成人| 少妇精品久久久| 日韩影院精彩在线| 亚洲免费一区二区| 99在线精品免费视频九九视|