java基础|java中时间与字符串之间的转换及获取常用时间

107 篇文章 0 订阅
103 篇文章 0 订阅

本网站记录了最全的各种JavaDEMO ,保证下载,复制就是可用的,包括基础的, 集合的, spring的, Mybatis的等等各种,助力你从菜鸟到大牛,记得收藏哦~~https://www.javastudy.cloud

时间与字符串之间的转换

其关键就在于SimpleDateFormat这个类

 
  1. /**

  2. * 这种写法是开发中经常用到的写法,但却不是jdk推荐的写法, 下一个DEMO展示JDK推荐的写

  3. * 法

  4. * @Author https://www.javastudy.cloud

  5. * @CreateTime 2019/11/02

  6. **/

  7. public class DateDemo {

  8.  
  9.  
  10. public static void main(String[] args) {

  11. // 这个类的精华就在于入参,可以转换不同的格式

  12. // 注意这个类不是线程安全的,切记不可多个线程共享同一个实例

  13. // 真要在多线程环境下使用可以使用 ThreadLocal存对应线程的 Format

  14. SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

  15.  
  16. //字符串转时间

  17. String myTimeStr = "2019-11-01 08:19:03";

  18. try {

  19. Date myDate = format.parse(myTimeStr);

  20. System.out.println(myDate);

  21. } catch (ParseException e) {

  22. e.printStackTrace();

  23. }

  24.  
  25. //时间转字符串

  26. Date currentDate = new Date();

  27. String currentDateStr = format.format(currentDate);

  28. System.out.println(currentDateStr);

  29.  
  30. }

  31. }

运行结果:

jdk推荐的写法:

 
  1. /**

  2. * @Author https://www.javastudy.cloud

  3. * @CreateTime 2019/11/02

  4. **/

  5. public class DateDemo {

  6.  
  7. public static void main(String[] args) {

  8.  
  9. // 与上一个DEMO不一样的是初始化

  10. // 一个是直接NEW,一个是用工厂的方式去获取

  11. SimpleDateFormat format = (SimpleDateFormat) SimpleDateFormat.getDateTimeInstance();

  12. // 通过applyPattern来设定格式

  13. format.applyPattern("yyyy-MM-dd HH:mm:ss");

  14.  
  15. //字符串转时间

  16. String myTimeStr = "2019-11-01 08:19:03";

  17. try {

  18. Date myDate = format.parse(myTimeStr);

  19. System.out.println(myDate);

  20. } catch (ParseException e) {

  21. e.printStackTrace();

  22. }

  23.  
  24. //时间转字符串

  25. Date currentDate = new Date();

  26. String currentDateStr = format.format(currentDate);

  27. System.out.println(currentDateStr);

  28.  
  29. }

  30. }

常用的时间格式及输出

节选字JDK,SimpleDateFormat源码

 
  1. yyyy.MM.dd G 'at' HH:mm:ss z

  2. 2001.07.04 AD at 12:08:56 PDT

  3.  
  4. EEE, MMM d, ''yy

  5. Wed, Jul 4, '01

  6.  
  7. h:mm a

  8. 12:08 PM

  9.  
  10. hh 'o''clock' a, zzzz

  11. 12 o'clock PM, Pacific Daylight Time

  12.  
  13. K:mm a, z

  14. 0:08 PM, PDT

  15.  
  16. yyyyy.MMMMM.dd GGG hh:mm aaa

  17. 02001.July.04 AD 12:08 PM

  18.  
  19. EEE, d MMM yyyy HH:mm:ss Z

  20. Wed, 4 Jul 2001 12:08:56 -0700

  21.  
  22. yyMMddHHmmssZ

  23. 010704120856-0700

  24.  
  25. yyyy-MM-dd'T'HH:mm:ss.SSSZ

  26. 2001-07-04T12:08:56.235-0700

  27.  
  28. yyyy-MM-dd'T'HH:mm:ss.SSSXXX

  29. 2001-07-04T12:08:56.235-07:00

  30.  
  31. YYYY-'W'ww-u

  32. 2001-W27-3

获取常用的时间

这是一个静态工具类,可以直接使用

 
  1. /**

  2. *

  3. * 一些和时间相关的工具类

  4. * @Author https://www.javastudy.cloud

  5. * 公众号: 程序员学习大本营

  6. * @CreateTime 2019/11/2

  7. **/

  8. public class DateTools {

  9.  
  10. /**

  11. * 获取上个月开始的时间

  12. * 2019-10-01 00:00:00

  13. * @return

  14. */

  15. public static Date lastMonthBegin(){

  16. Calendar calendar = Calendar.getInstance();

  17. calendar.add(Calendar.MONTH,-1);

  18. calendar.set(Calendar.DAY_OF_MONTH, 1);

  19. clearTimeForCalendar(calendar);

  20. Date time = calendar.getTime();

  21. return time;

  22. }

  23.  
  24. /**

  25. * 获取 1970-01-01 00:00:00 这个时间点

  26. * @return

  27. */

  28. public static Date earlyDate(){

  29. Calendar calendar = Calendar.getInstance();

  30. calendar.set(Calendar.YEAR,1970);

  31. calendar.set(Calendar.MONTH,1);

  32. calendar.set(Calendar.DAY_OF_MONTH, 1);

  33. clearTimeForCalendar(calendar);

  34. Date time = calendar.getTime();

  35. return time;

  36. }

  37.  
  38. /**

  39. * 获取上个月结束的时间点

  40. * 2019-10-31 23:59:59

  41. * @return

  42.  
  43. */

  44. public static Date lastMonthEnd(){

  45. Calendar calendar = Calendar.getInstance();

  46. //先获取到这个月的第一天

  47. calendar.set(Calendar.DAY_OF_MONTH, 1);

  48. clearTimeForCalendar(calendar);

  49. //然后秒数减1就是上个月最后一刻了

  50. calendar.add(Calendar.SECOND, -1);

  51. return calendar.getTime();

  52. }

  53.  
  54. /**

  55. * 获取这个月开始的时间

  56. * 2019-11-01 00:00:00

  57. * @return

  58. */

  59. public static Date thisMonthBegin(){

  60. Calendar calendar = Calendar.getInstance();

  61. //先获取到这个月的第一天

  62. calendar.set(Calendar.DAY_OF_MONTH, 1);

  63. clearTimeForCalendar(calendar);

  64. return calendar.getTime();

  65. }

  66.  
  67. /**

  68. * 获取这个月结束的时间

  69. * 2019-11-30 23:59:59

  70. * @return

  71. */

  72. public static Date thisMonthEnd(){

  73. Calendar calendar = Calendar.getInstance();

  74. //先获取到这个月的第一天

  75. calendar.set(Calendar.DAY_OF_MONTH, 1);

  76. calendar.add(Calendar.MONTH,1);

  77. clearTimeForCalendar(calendar);

  78. calendar.add(Calendar.SECOND, -1);

  79. return calendar.getTime();

  80. }

  81.  
  82. /**

  83. * 获取今天开始的时间

  84. * 2019-11-02 00:00:00

  85. * @return

  86. */

  87. public static Date thisDayBegin(){

  88. Calendar calendar = Calendar.getInstance();

  89. clearTimeForCalendar(calendar);

  90. return calendar.getTime();

  91. }

  92.  
  93. /**

  94. * 获取今天结束的时间

  95. * 2019-11-02 23:59:59

  96. * @return

  97. */

  98. public static Date thisDayEnd(){

  99. Calendar calendar = Calendar.getInstance();

  100. calendar.add(Calendar.DAY_OF_MONTH,1);

  101. clearTimeForCalendar(calendar);

  102. calendar.add(Calendar.SECOND, -1);

  103. return calendar.getTime();

  104. }

  105.  
  106. /**

  107. * 把date里面的时分秒给清空

  108. * @param date

  109. * @return

  110. */

  111. public static Date clearTimeForDate(Date date){

  112. Calendar calendar = Calendar.getInstance();

  113. calendar.setTime(date);

  114. clearTimeForCalendar(calendar);

  115. return calendar.getTime();

  116. }

  117.  
  118. /**

  119. * 把Calendar时间里面的时分秒给清空

  120. * @param calendar

  121. */

  122. public static void clearTimeForCalendar(Calendar calendar){

  123. calendar.set(Calendar.HOUR_OF_DAY,0);

  124. calendar.set(Calendar.MINUTE,0);

  125. calendar.set(Calendar.SECOND,0);

  126. }

  127.  
  128. }

DEMO 总评
时间与字符串之间的转换是开发中必不可少的技能, 有Calendar,Date,SimpleDateFormat等类的使用. 这块建议封装成工具类直接调用, 不用在代码里面重复造轮子, 少年,加油吧!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值