• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
夏弈
沿着河边的白沙滩行走,希望能找到桃花源。
博客园    首页    新随笔    联系   管理    订阅  订阅
【夏弈的开发经验】关于日期类型的一些使用经验

最近经常会用到日期类型,数据库啦,SpringBoot啦之类的,现在总结一些这段时间里我对时间类型的使用经验。毕竟我也是个新人,如果哪里有错误,还希望帮忙指出,不甚感激。

————————————————————————————————————

时间类型,我用的最多的还是Java.util.Date类,该类型有一些非常方便的方法。

但是这些方法中有很多都过时了,查了一下,好像是因为Date在一开始就设计的有问题,因此很多方法都不推荐使用,而且还出了一些新的替代方法。

    

以上的这些方法中,我用到的最多的无疑就是“Date date = new Date()”(哈哈哈哈),创建出的实例对象就是当前的系统时间,格式为:“Thu Mar 28 10:06:41 CST 2019”,

除此之外,该类还允许传入一个字符串类型的日期(如:"2018-09-25 12:50:36")或一个长整型的毫秒值,将这些参数转化为日期格式。

使用date.getTime()可以获取到date时间的毫秒值,我之前用这个方法实现了一个很有趣的功能。

对于Date的实例,我发现可以将其直接导入数据库,数据库可以主动对其进行格式转换。但是如果手动转换格式,就用得到下面的方法了。

日期格式转换,目前我知道的方法有三种:

Date date = new Date();

1)最愚蠢的办法:获取毫秒值,手动算出年月日,时分秒,然后拼成字符串;

2)使用java.text.SimpleDateFormat类的实例进行类型转换,示例如下:

  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); // 注意传入的格式

  String date2 = sdf.format(date);

3)使用org.apache.commons.lang.time.DateFormatUtils类提供的format方法进行类型转换,该方法是一个静态方法,无需实例即可使用。这个方法非常强大与实用,它能够对多种格式的源数据进行转换,包括但不限于Calendar类型,Date类型,长整型毫秒值,字符串等:

  String date2 = DateFormatUtils.format(date, "yyyy-MM-dd hh:mm:ss");

    

需要注意的是,上面三种方式的返回值都是String类型。

 

正是因为Date本身的设计缺陷,很多人都推荐使用java.util.Calendar类,这是一个日历类。

该类被abstract修饰,意味着无法通过new来获取一个实例,但是它提供了getInstance()方法获取一个实例。

  Calendar cal = Calendar.getInstance();

其格式为:

  "java.util.GregorianCalendar[time=1553742156536,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2019,MONTH=2,WEEK_OF_YEAR=13,WEEK_OF_MONTH=5,DAY_OF_MONTH=28,DAY_OF_YEAR=87,DAY_OF_WEEK=5,DAY_OF_WEEK_IN_MONTH=4,AM_PM=0,HOUR=11,HOUR_OF_DAY=11,MINUTE=2,SECOND=36,MILLISECOND=536,ZONE_OFFSET=28800000,DST_OFFSET=0]

"

这么长的一大串~~

实际读起来会发现它类似于键值对格式,其中包括时,分,秒,毫秒,年,月,日,当前时区和标准时区的偏移量等等。

获取到Calendar实例后,可以通过getTime()(注意和Date.getTime()的区别)获取到一个Date对象,格式为:“Thu Mar 28 11:02:36 CST 2019”。

除此之外,Calendar还提供了一系列的方法用去取代Date的一些过时方法,包括设置时分秒,年月日之类的。

同时,由于Calendar的格式,它还提供了一些更有意思的方法,比如获取当前日期是这一年的第几个星期之类的:

<end>

 

posted on 2019-03-28 11:13  夏弈  阅读(158)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3