Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中将数值转换为日期_Java_Date - Fatal编程技术网

在Java中将数值转换为日期

在Java中将数值转换为日期,java,date,Java,Date,我正在尝试将中的数字字符串值转换为日期 我的代码是 String input = "1537011000"; Date d = new SimpleDateFormat("ddMMMM").parse(input); String output = new SimpleDateFormat("MMMM dd, yyyy").format(d); System.out.println("output = " + output); **但我不能改变信仰。我得到一个异常: 无法解析的日期:“153

我正在尝试将中的数字字符串值转换为日期

我的代码是

String input =  "1537011000";
Date d = new SimpleDateFormat("ddMMMM").parse(input);
String output = new SimpleDateFormat("MMMM dd, yyyy").format(d);
System.out.println("output = " + output);
**但我不能改变信仰。我得到一个
异常:
无法解析的日期:“1537011000”


预期结果是9月15日

您的值中似乎有纪元秒,因此您可以使用
新日期(长)
使用该值的长表示乘以1000:

Date d = new Date(Long.parseLong(input) * 1000);

这将
d
设置为
9月15日

您的值中似乎有纪元秒,因此您可以使用该值乘以1000的长表示形式使用
新日期(长)

Date d = new Date(Long.parseLong(input) * 1000);

d
设置为
9月15日

SimpleDateFormat(“ddMMMM”)。parse(input)
解析字符串
input
,该字符串应包含以给定格式格式化的日期,在您的示例中为“ddMMMM”。因此,它期望的是“9月18日”(其中18是一年),而不是大纪元。您必须将历元时间转换为数据,然后以所需格式打印。

SimpleDateFormat(“ddMMMM”)。解析(输入)
解析字符串
input
,该字符串应包含以给定格式格式化的日期,在您的示例中为“ddMMMM”。因此,它期望的是“9月18日”(其中18是一年),而不是大纪元。您必须将历元时间转换为数据,然后以所需格式打印。

它是秒数,日期使用毫秒。新的日期时间类(LocalDateTime)应该是首选方式

    LocalDateTime t = LocalDateTime.ofEpochSecond(1537011000L, 0, ZoneOffset.UTC);
    Date d = new Date(1537011000L*1000);
    System.out.println(t);
    System.out.println(d);

2018-09-15T11:30
Sat Sep 15 13:30:00 CEST 2018

它是秒数,Date使用ms。新的日期时间类(LocalDateTime)应该是首选方式

    LocalDateTime t = LocalDateTime.ofEpochSecond(1537011000L, 0, ZoneOffset.UTC);
    Date d = new Date(1537011000L*1000);
    System.out.println(t);
    System.out.println(d);

2018-09-15T11:30
Sat Sep 15 13:30:00 CEST 2018

“1537011000”代表什么?从某个起点开始的(毫秒)秒数?从1970年1月1日开始看起来像是几秒钟(而不是几毫秒),我建议您避免使用
SimpleDateFormat
类。它不仅早已过时,而且还出了名的麻烦。今天我们有了这么多更好的,1537011000代表什么?从某个起点开始的(毫秒)秒数?从1970年1月1日开始看起来像是几秒钟(而不是几毫秒),我建议您避免使用
SimpleDateFormat
类。它不仅早已过时,而且还出了名的麻烦。今天,我们有了更好、更简单的:
Instant.ofEpochSecond(1_537_011_000)
;还保留偏移量信息(如果可能,最好避免过时和设计不良的
日期
类)。@OleV.V<代码>瞬间。每秒
也是我的第一个想法;事实上,最干净的,尽管需要更多的概述和对使用许多类的深入了解<代码>日期
被提到的OP so s/ms问题所提及。或者更简单一些:
瞬间秒(1秒537秒011秒000)
;还保留偏移量信息(如果可能,最好避免过时和设计不良的
日期
类)。@OleV.V<代码>瞬间。每秒
也是我的第一个想法;事实上,最干净的,尽管需要更多的概述和对使用许多类的深入了解<提到的OP so s/ms问题提到了代码>日期