【问题标题】:Convert milliseconds to date in Java [duplicate]在Java中将毫秒转换为日期[重复]
【发布时间】:2020-09-08 02:52:10
【问题描述】:

如何像 DD-mm-yyyy 一样从毫秒转换为日期?我的数据库中有一个包含公共假期日期的列,它的类型是日期。在我的实体和 DTO 类中,我的列是日期类型。当我尝试从数据库中检索表时,日期以毫秒为单位,如下所示:

 {
   "date" : 1577916000000,
   "id" :1,
   "description" : New Years Eve
}

【问题讨论】:

  • 不要使用DateSimpleDateFormat,它们已经过时了。使用 java.time 包中的类。
  • 在您的情况下,您可以使用Instant::ofEpochMilli。然后您可以使用atOffsetatZone 将其分别转换为OffsetDateTimeZonedDateTime。为了格式化,使用DateTimeFormatter 类来创建格式。更多详情请查看the documentation of the DateTimeFormatter class

标签: java date simpledateformat


【解决方案1】:
Instant
            .ofEpochMilli(1577916000000L)
            .atZone(ZoneId.systemDefault())
            .format(DateTimeFormatter.ofPattern("dd-MM-yyyy"))

您可以在此处阅读更多关于模式的信息https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html

PS:尽量避免使用 java.util 包中过时的 Date 和 SimpleDateFormat。它们被 java.time 包所取代

【讨论】:

    【解决方案2】:

    您似乎得到了一个日期作为时间戳。您必须将其格式化为字符串,如下所示。

    Date date=new Date(yourDateWithMs);
    DateFormat dateFormat = new SimpleDateFormat("dd-mm-yyyy");  
    String strDate = dateFormat.format(date); 
    

    这个Date 是'java.util.Date' 并且yourDateWithMs 可以给出很长的时间。

    DateFormat 用于格式化结果字符串。

    【讨论】:

    • 错了。这只是给了我java.lang.IllegalArgumentException。也请不要教年轻人使用早已过时且臭名昭著的SimpleDateFormat类。至少不是第一选择。而且不是没有任何保留。今天我们在java.time, the modern Java date and time API, 和它的DateTimeFormatter 中做得更好。
    • @OleV.V.感谢更新。同时,即使知道我的答案已经过时,我也很好奇你为什么会收到java.lang.IllegalArgumentException
    • 部分原因是我没有正确阅读您的答案。我的 Eclipse 将yourDateWithMs 变量创建为String,并将其初始化为"1577916000000"。有一个已弃用的 Date(String) 构造函数,但它不接受此字符串。相反,当我声明long yourDateWithMs = 1577916000000L; 时,我得到strDate02-30-2020。 30 个月?也不对。
    【解决方案3】:

    试试这个:

    double s=1577916000000.0/1000;
            DateFormat df = new SimpleDateFormat("dd MMM yyyy ");
            String a=df.format(s);
    

    【讨论】:

    • 我认为这是错误的。它给了我19 Jan 1970 ,这可能是不正确的。也请不要教年轻人使用早已过时且臭名昭著的麻烦SimpleDateFormat类。至少不是第一选择。而且不是没有任何保留。今天我们在java.time, the modern Java date and time API, 和它的DateTimeFormatter 中做得更好。
    猜你喜欢
    • 1970-01-01
    • 2012-01-15
    • 2015-10-06
    • 1970-01-01
    • 2019-12-24
    • 1970-01-01
    • 2012-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多