jdk里面的日期格式处理使用SimpleDateFormat,这个类其实也是在内部调用的Calendar

Calendar概念比较负责,涉及到时区和本地化

看一些简单的demo:

  1. package com.qhong;
  2.  
  3. import java.text.DateFormat;
  4. import java.text.SimpleDateFormat;
  5. import java.util.Calendar;
  6. import java.util.Date;
  7.  
  8. public class Main {
  9. public static void main(String[] args) throws Exception {
  10. DateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
  11. System.out.println(df.format(new Date()));
  12. Calendar calendar=Calendar.getInstance();
  13. Date dt=calendar.getTime();
  14. System.out.println(df.format(dt));
  15. System.out.println(calendar.getWeekYear());
  16. System.out.println(calendar.getFirstDayOfWeek());
  17. System.out.println(calendar.getWeeksInWeekYear());
  18. System.out.println("====================");
  19. System.out.println(calendar.get(Calendar.YEAR));
  20. System.out.println(calendar.get(Calendar.MONTH));
  21. System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
  22. System.out.println(calendar.get(Calendar.DAY_OF_WEEK));
  23. System.out.println(calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH));
  24. System.out.println(calendar.get(Calendar.DAY_OF_YEAR));
  25. System.out.println("====================");
  26. System.out.println(calendar.get(Calendar.DATE));
  27. System.out.println(calendar.get(Calendar.HOUR));
  28. System.out.println(calendar.get(Calendar.HOUR_OF_DAY));
  29. System.out.println(calendar.get(Calendar.MINUTE));
  30. System.out.println(calendar.get(Calendar.SECOND));
  31. System.out.println("====================");
  32. System.out.println(calendar.get(Calendar.MILLISECOND));
  33. Calendar NewCalendar=Calendar.getInstance();
  34. NewCalendar.setTime(new Date());
  35. System.out.println(df.format(NewCalendar.getTime()));
  36. NewCalendar.add(Calendar.YEAR,-1);
  37. System.out.println(df.format(NewCalendar.getTime()));
  38. NewCalendar.add(Calendar.MONTH,2);
  39. System.out.println(df.format(NewCalendar.getTime()));
  40. NewCalendar.add(Calendar.DATE,3);
  41. //后者大,显示 -1
  42. System.out.println(df.format(NewCalendar.getTime()));
  43. System.out.println("时间比较:"+NewCalendar.compareTo(calendar));
  44. //前者大,显示 1
  45. NewCalendar.add(Calendar.YEAR,1);
  46. System.out.println("时间比较:"+NewCalendar.compareTo(calendar));
  47. }
  48. }
  1. 2017-03-13 22:36:08:393
  2. 2017-03-13 22:36:08:394
  3. 2017
  4. 1
  5. 52
  6. ====================
  7. 2017
  8. 2
  9. 13
  10. 2
  11. 2
  12. 72
  13. ====================
  14. 13
  15. 10
  16. 22
  17. 36
  18. 8
  19. ====================
  20. 394
  21. 2017-03-13 22:36:08:394
  22. 2016-03-13 22:36:08:394
  23. 2016-05-13 22:36:08:394
  24. 2016-05-16 22:36:08:394
  25. 时间比较:-1
  26. 时间比较:1

比较好的第三方解决方案:joda-time

  1. <dependency>
  2. <groupId>joda-time</groupId>
  3. <artifactId>joda-time</artifactId>
  4. <version>2.9.9</version>
  5. </dependency>

最简单的demo:

  1. package com.qhong;
  2.  
  3. import org.joda.time.DateTime;
  4. import org.joda.time.format.DateTimeFormat;
  5. import org.joda.time.format.DateTimeFormatter;
  6.  
  7. import java.util.Date;
  8.  
  9. public class Main {
  10. public static void main(String[] args) {
  11.  
  12. Date now=new Date();
  13. DateTime dt=new DateTime(now);
  14. System.out.println(dt.toString("yyyy-MM-dd HH:mm:ss"));
  15. String str="2017-08-15 12:12:22";
  16. DateTimeFormatter format = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
  17. DateTime dt2=format.parseDateTime(str);
  18.  
  19. DateTime dt3=DateTime.parse(str,format);
  20. System.out.println(dt2.equals(dt3));
  21. System.out.println(dt2.toString("yyyy-MM-dd HH:mm:ss"));
  22.  
  23. }
  24. }

Output:

  1. 2017-08-06 22:14:15
  2. true
  3. 2017-08-15 12:12:22

复杂的demo:

  1. package com.qhong;
  2.  
  3. import org.joda.time.DateTime;
  4. import org.joda.time.Days;
  5. import org.joda.time.LocalDate;
  6. import org.joda.time.format.DateTimeFormat;
  7. import org.joda.time.format.DateTimeFormatter;
  8.  
  9. import java.util.Calendar;
  10. import java.util.Date;
  11. import java.util.Locale;
  12.  
  13. public class Main {
  14. public static void main(String[] args) {
  15.  
  16. //初始化时间
  17. DateTime dateTime=new DateTime(2017, 8, 6, 20, 34,55);
  18.  
  19. //下面就是按照一点的格式输出时间
  20. String str2 = dateTime.toString("MM/dd/yyyy hh:mm:ss.SSSa");
  21. String str3 = dateTime.toString("dd-MM-yyyy HH:mm:ss");
  22. String str4 = dateTime.toString("EEEE dd MMMM, yyyy HH:mm:ssa");
  23. String str5 = dateTime.toString("MM/dd/yyyy HH:mm ZZZZ");
  24. String str6 = dateTime.toString("MM/dd/yyyy HH:mm Z");
  25.  
  26. System.out.println(str2);
  27. System.out.println(str3);
  28. System.out.println(str4);
  29. System.out.println(str5);
  30. System.out.println(str6);
  31. System.out.println(dateTime.toString("yyyy-MM-dd HH:mm:ss"));
  32. System.out.println("==========================");
  33. DateTimeFormatter format = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
  34. //时间解析
  35. DateTime dateTime2 = DateTime.parse("2012-12-21 23:22:45", format);
  36.  
  37. //时间格式化,输出==> 2012/12/21 23:22:45 Fri
  38. String string_u = dateTime2.toString("yyyy/MM/dd HH:mm:ss EE");
  39. System.out.println(string_u);
  40.  
  41. //格式化带Locale,输出==> 2012年12月21日 23:22:45 星期五
  42. String string_c = dateTime2.toString("yyyy年MM月dd日 HH:mm:ss EE", Locale.CHINESE);
  43. System.out.println(string_c);
  44.  
  45. DateTime dt1 = new DateTime();// 取得当前时间
  46.  
  47. // 根据指定格式,将时间字符串转换成DateTime对象,这里的格式和上面的输出格式是一样的
  48. DateTime dt2 = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss").parseDateTime("2012-12-26 03:27:39");
  49.  
  50. //计算两个日期间隔的天数
  51. LocalDate start=new LocalDate(2012, 12,14);
  52. LocalDate end=new LocalDate(2013, 01, 15);
  53. int days = Days.daysBetween(start, end).getDays();
  54.  
  55. //计算两个日期间隔的小时数,分钟数,秒数
  56.  
  57. //增加日期
  58. DateTime dateTime1 = DateTime.parse("2012-12-03");
  59. dateTime1 = dateTime1.plusDays(30);
  60. dateTime1 = dateTime1.plusHours(3);
  61. dateTime1 = dateTime1.plusMinutes(3);
  62. dateTime1 = dateTime1.plusMonths(2);
  63. dateTime1 = dateTime1.plusSeconds(4);
  64. dateTime1 = dateTime1.plusWeeks(5);
  65. dateTime1 = dateTime1.plusYears(3);
  66.  
  67. // Joda-time 各种操作.....
  68. dateTime = dateTime.plusDays(1) // 增加天
  69. .plusYears(1)// 增加年
  70. .plusMonths(1)// 增加月
  71. .plusWeeks(1)// 增加星期
  72. .minusMillis(1)// 减分钟
  73. .minusHours(1)// 减小时
  74. .minusSeconds(1);// 减秒数
  75.  
  76. //判断是否闰月
  77. DateTime dt4 = new DateTime();
  78. org.joda.time.DateTime.Property month = dt4.monthOfYear();
  79. System.out.println("是否闰月:" + month.isLeap());
  80.  
  81. //取得 3秒前的时间
  82. DateTime dt5 = dateTime1.secondOfMinute().addToCopy(-3);
  83. dateTime1.getSecondOfMinute();// 得到整分钟后,过的秒钟数
  84. dateTime1.getSecondOfDay();// 得到整天后,过的秒钟数
  85. dateTime1.secondOfMinute();// 得到分钟对象,例如做闰年判断等使用
  86.  
  87. // DateTime与java.util.Date对象,当前系统TimeMillis转换
  88. DateTime dt6 = new DateTime(new Date());
  89. Date date = dateTime1.toDate();
  90. DateTime dt7 = new DateTime(System.currentTimeMillis());
  91. dateTime1.getMillis();
  92.  
  93. Calendar calendar = Calendar.getInstance();
  94. dateTime = new DateTime(calendar);
  95. }
  96. }

Output:

  1. 08/06/2017 08:34:55.000下午
  2. 06-08-2017 20:34:55
  3. 星期日 06 八月, 2017 20:34:55下午
  4. 08/06/2017 20:34 Asia/Shanghai
  5. 08/06/2017 20:34 +0800
  6. 2017-08-06 20:34:55
  7. ==========================
  8. 2012/12/21 23:22:45 星期五
  9. 20121221 23:22:45 星期五
  10. 是否闰月:false

比SimpleDataFormat简单多了

http://blog.csdn.net/joyous/article/details/9630893

http://sunnyhl.iteye.com/blog/1205820

http://www.cnblogs.com/peida/archive/2013/05/31/3070790.html

http://ylq365.iteye.com/blog/1769680

Java 时间格式处理的更多相关文章

  1. JAVA时间格式转换大全

    import java.text.*; import java.util.Calendar; public class VeDate { /** * 获取现在时间 * * @return 返回时间类型 ...

  2. java时间格式大全

    java.util.*;import java.text.*;import java.util.Calendar; public class VeDate { /**  * 获取现在时间  *   * ...

  3. java 时间格式

    自定义时间格式:yyyy 年MM 月dd 天HH 24小时制hh 12小时制mm 分钟ss 秒 java.util.Date日期格式为:年月日时分秒 java.sql.Date日期格式为:年月日jav ...

  4. Java时间格式字符串与Date的相互转化

    目录 将Date转化为格式化字符串 时间格式字符串转化为Date @ 将Date转化为格式化字符串 将Date转化为格式化字符串是利用SimpleDateFormat类继承自 java.text.Da ...

  5. java时间格式转换任意格式

    例如:20180918/120023转换成2018-09-18 12:00:23 //时间格式转换 public String getNomalTime(String oldTime){ String ...

  6. java时间格式转换

    package org.shineway.com; import java.text.ParseException; import java.text.SimpleDateFormat; import ...

  7. Java时间格式转换工具类

    把当前时间修改成指定时间 //把当前时间修改成指定时间 public String dateUtil(Integer seconds, String dateFormatPattern){ Date ...

  8. java时间格式

    Calendar startdate = Calendar.getInstance(); startdate.setTime(new Date()); //当前时间 startdate.add(Cal ...

  9. java时间格式转化(毫秒 to 00:00)

    把秒数转换为%d:%02d:%02d 格式 private String stringForTime(int timeSec) { int totalSeconds = timeSec; int se ...

随机推荐

  1. LeetCode——Generate Parentheses

    Description: Given n pairs of parentheses, write a function to generate all combinations of well-for ...

  2. Elasticsearch 常用基本查询

    安装启动很简单,参考官网步骤:https://www.elastic.co/downloads/elasticsearch 为了介绍Elasticsearch中的不同查询类型,我们将对带有下列字段的文 ...

  3. hihocoder [Offer收割]编程练习赛14 小Hi和小Ho的礼物

    题目1 : 小Hi和小Ho的礼物 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 某人有N袋金币,其中第i袋内金币的数量是Ai.现在他决定选出2袋金币送给小Hi,再选2袋 ...

  4. img通过canvas转成base64编码

    <script type="text/javascript"> function getBase64Image(img) { var canvas = document ...

  5. JQuery 用法总结

    1.隐藏与显示,用于div等等 //隐藏id=myTab下的所有li标签 $("#myTab li").hide(); //动画隐藏,1秒内隐藏该对象 $(); //显示class ...

  6. oracle的connect by level的示例

    SELECT regexp_substr('CITY_AA,CITY_BB,CITY_CC,CITY_DD', '[^,]+', 1, LEVEL) t FROM dualCONNECT BY reg ...

  7. vue 引入通用 css

    1.在入口 js 文件 main.js 中引入,一些公共的样式文件,可以在这里引入. import Vue from 'vue' import App from './App' // 引入App这个组 ...

  8. SaltStack配置管理-状态间关系

    上一篇:SaltStack配置管理-LAMP状态设计 include包含 上篇安装LAMP环境是一个个环境安装,可以通过include模块全部安装 lamp.sls include: - apache ...

  9. 2014年web页面上的3D新产品介绍

    地图对于数据的可视化展现有独到的显示方式,首先是底图.地图提供了一个定位的蓝图,让用例数据可以有参考的背景,因此底图通常是线画矢量图或者影像图.互联网上提供这种服务的基本以Google风格,也就是Ti ...

  10. 设计模式之——Decorator模式

    Decorator模式又叫装饰者模式,这种模式是为了满足Java开发的"面向扩展开放,面向修改闭源"的开发原则设计出来的. 在装饰者模式中,不修改源类的代码,却能修改源类中方法的功 ...