Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.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
ISO8601格式,java给定秒数_Java_Datetime_Time_Data Conversion_Iso8601 - Fatal编程技术网

ISO8601格式,java给定秒数

ISO8601格式,java给定秒数,java,datetime,time,data-conversion,iso8601,Java,Datetime,Time,Data Conversion,Iso8601,在ISO8601中,如果给定从纪元开始的秒数,如何获取Java中的字符串?我在任何地方都找不到它 我希望格式如下所示: 2000-06-31T19:22:15Z 使用just Date d=new Date(从我的秒数算起的毫秒数)可以给我一个1970年的日期,那时我应该在2000年得到一些东西 Instant start = Instant.now() ; Instant stop = start.plusSeconds( 135L ) ; Duration d =

在ISO8601中,如果给定从纪元开始的秒数,如何获取Java中的字符串?我在任何地方都找不到它

我希望格式如下所示: 2000-06-31T19:22:15Z

使用just Date d=new Date(从我的秒数算起的毫秒数)可以给我一个1970年的日期,那时我应该在2000年得到一些东西

    Instant start = Instant.now() ;
    Instant stop = start.plusSeconds( 135L ) ;

    Duration d = Duration.between( start , stop ) ;

    long minutesPart = d.toMinutes(); 
    long secondsPart = d.minusMinutes( minutesPart ).getSeconds() ;

    System.out.println( "Interval: " + start + "/" + stop );
    );
我想这段代码会帮助你得到这样的东西:2000-06-31T19:22:15Z


我认为这段代码将帮助您获得这样的结果:2000-06-31T19:22:15Z。

您可能遇到的主要问题是,2000年6月只有30天。也就是说,不用
Date
,您可以将
LocalDateTime
与类似的

这应该是你需要看到的全部

2000-06-30T19:22:15Z

这与您要求的输出类似。

您可能遇到的主要问题是,2000年6月只有30天。也就是说,不用
Date
,您可以将
LocalDateTime
与类似的

这应该是你需要看到的全部

2000-06-30T19:22:15Z
这与您请求的输出类似。

tl;博士 2000-06-30T19:22:15Z

细节 其他答案毫无必要地复杂

该类以UTC表示时间线上的一个点,分辨率为纳秒

Instant.now()  // Current moment in UTC.
如果在UTC 1970-01-01T00:00Z的1970年第一个时刻的历元参考日期后有秒数,则只需使用
Instant.ofEpochSecond
工厂方法即可

Instant instant = Instant.ofEpochSeconds( mySeconds ) ;
要生成标准ISO格式的字符串,只需调用
Instant::toString

String output = instant.toString() ;
2000-06-30T19:22:15Z

正如Elliott Frisch所指出的,将您的示例的6月31日错误更正为6月30日:

long secondsSinceEpoch = Instant.parse( "2000-06-30T19:22:15Z" ).toEpochSecond() ;  // Gets the number of seconds from the Java epoch of 1970-01-01T00:00:00Z.
962392935

始终避免遗留日期时间类 不要使用麻烦的旧日期时间类,例如
date
。它们完全被java 8和更高版本中内置的java.time类所取代

出于您的目的,避免使用
LocalDateTime
本页其他地方关于使用
LocalDateTime
类的建议是不明智的

该类故意缺乏时区或UTC偏移的概念。因此,此类并不表示时间线上的特定点。您将丢弃有关UTC价值的重要信息

tl;博士 2000-06-30T19:22:15Z

细节 其他答案毫无必要地复杂

该类以UTC表示时间线上的一个点,分辨率为纳秒

Instant.now()  // Current moment in UTC.
如果在UTC 1970-01-01T00:00Z的1970年第一个时刻的历元参考日期后有秒数,则只需使用
Instant.ofEpochSecond
工厂方法即可

Instant instant = Instant.ofEpochSeconds( mySeconds ) ;
要生成标准ISO格式的字符串,只需调用
Instant::toString

String output = instant.toString() ;
2000-06-30T19:22:15Z

正如Elliott Frisch所指出的,将您的示例的6月31日错误更正为6月30日:

long secondsSinceEpoch = Instant.parse( "2000-06-30T19:22:15Z" ).toEpochSecond() ;  // Gets the number of seconds from the Java epoch of 1970-01-01T00:00:00Z.
962392935

始终避免遗留日期时间类 不要使用麻烦的旧日期时间类,例如
date
。它们完全被java 8和更高版本中内置的java.time类所取代

出于您的目的,避免使用
LocalDateTime
本页其他地方关于使用
LocalDateTime
类的建议是不明智的


该类故意缺乏时区或UTC偏移的概念。因此,此类并不表示时间线上的特定点。您将丢弃有关UTC价值的重要信息

向我们展示您用于从秒数中获取毫秒数的确切内容。
DateTimeFormatter
内置了对
ISO8601
的支持-您只需将秒数转换为毫秒,用
LocalDateTime
包装即可快速获得好答案,最好的方法是在询问之前进行搜索。你在1个问题中问了2个问题,每个问题都被ben问了很多次并回答了很多次。(1) 如何转换自eopch以来的秒数?例如,见。(2) 如何格式化为ISO-8601?例如,请参阅向我们展示您用于从秒数中获取毫秒数的确切内容。
DateTimeFormatter
内置了对
ISO8601
的支持-您只需将时间从秒数转换为毫秒,用
LocalDateTime
包装,快速获得好答案的最佳方法是在询问之前进行搜索。你在1个问题中问了2个问题,每个问题都被ben问了很多次并回答了很多次。(1) 如何转换自eopch以来的秒数?例如,见。(2) 如何格式化为ISO-8601?例如,请参见您仅仅依赖于
即时
字段的内部表示,随着时间的推移,该字段可能不可靠-最好使用
日期时间格式
classI没有得到它,@MadProgrammer?被记录为“使用ISO-8601表示法生成此瞬间的字符串表示法”。它不是内部表示法。虽然代码做了一些问题中没有要求的事情。是的,从技术上讲这是正确的,但我仍然认为DateTimeFormatter(使用预定义实例或自定义实例之一)这将是一个更有用、更可靠的解决方案-这只是我的观点,你只是依赖于
即时
字段的内部表示,随着时间的推移,它可能不可靠-最好使用
日期时间格式
classI没有得到,MadProgrammer?被记录为“使用ISO-8601表示法生成此瞬间的字符串表示法”。它不是内部表示法。虽然代码做了一些问题中没有要求的事情。是的,从技术上讲这是正确的,但我仍然认为DateTimeFormatter(使用预定义实例或自定义实例)将是一个更有用、更可靠的解决方案-这正是我的观点难以置信,Elliott!谢谢:)你不需要一个明确的fo