当前位置: 首页 > 知识库问答 >
问题:

分区日期时间。即时未显示秒数

韩智敏
2023-03-14

我正在尝试使用ZonedDateTime.ofInstant给出特定的日期时间来获取时间,但是我注意到在某些情况下,给出的结果不包含秒数。表示我正在处理的情况的代码示例

import java.time.*;
  
public class GFG {
    public static void main(String[] args)
    {
  
  
        
        // create a long variable for milliseconds
        //this is the same as "2022-01-31T00:00:00.00Z"
        long milliseconds1  = 1643587200000L;
        long milliseconds2  = 1643587201000L;
            

        // get Instant using ofEpochMilli() method
        Instant instant1
            = Instant.ofEpochMilli(milliseconds1); 
        // create Instant object
        Instant instant2
            = Instant.ofEpochMilli(milliseconds2);
  
        // create a ZonID
        ZoneId zone = ZoneId.of("Europe/Lisbon");
  
        // apply ofInstant method
        // of ZonedDateTime class
        ZonedDateTime zt1 = ZonedDateTime
                               .ofInstant(instant1, zone);
        ZonedDateTime zt2 = ZonedDateTime
                                .ofInstant(instant2, zone);
  
        // print the result
        System.out.println("ZonedDateTime is " + zt1);
        System.out.println("ZonedDateTime is " + zt2);
    }
}

此代码执行的结果如下所示:

ZonedDateTime is 2022-01-31T00:00Z[Europe/Lisbon]
ZonedDateTime is 2022-01-31T00:00:01Z[Europe/Lisbon]

我需要获得第一个结果中没有显示的秒数,但我不明白为什么没有显示。ZonedDateTime.ofInstant没有给出完整时间是有原因的吗,或者有不同的方法来获得YYYY-MM-DD:HH:MM:SS中特定时区的时间吗?

共有1个答案

莫乐
2023-03-14

您只是使用了默认的< code>toString()实现,该实现又使用了默认的< code > local datetime . toString()实现,记录如下:

输出将是以下ISO-8601格式之一:

  • uuu MM dd'T'HH:MM
  • uuu MM dd'T'HH:MM:ss(uuu MM-dd'T时:分:秒)
  • uuuu MM dd'T'HH:MM:ss(uuu月日)。SSS
  • uuuu MM dd'T'HH:MM:ss(uuu月日)。SSSSSS
  • uuu MM dd’T'HH:MM:ss.SSSSSSS(uuu MM-dd’T'H小时:毫米:秒)

使用的格式将是最短的,输出省略部分被暗示为零的时间的完整值。

如果您想要非默认格式(听起来像是这样做),则需要使用 DateTime 格式化程序。我怀疑日期时间格式化程序.ISO_ZONED_DATE_TIME可以做你想要的 - 但如果没有,只需构建一个具有你想要的确切格式。

示例代码

import java.time.*;
import java.time.format.*;

public class Test {
    public static void main(String[] args) {
        Instant instant = Instant.ofEpochMilli(1643587200000L);
        ZoneId zone = ZoneId.of("Europe/Lisbon");
        ZonedDateTime zdt = ZonedDateTime.ofInstant(instant, zone);
        DateTimeFormatter formatter = DateTimeFormatter.ISO_ZONED_DATE_TIME;
        System.out.println(formatter.format(zdt));
    }
}

输出:

2022-01-31T00:00:00Z[Europe/Lisbon]
 类似资料:
  • 问题内容: 我从网络获取日期/时间字符串,格式为“ yyyy / mm / dd’T’HH:MM:SS’Z’”,它采用UTC格式。 现在,我必须确定设备的当前时区,然后将此时间转换为本地时间。 我该怎么做,请建议我! (仅供参考,目前,UTC时间为10:25 AM,印度当前时间为3:55 PM) 问题答案: 尝试使用代替 从文档: …您使用getDefault得到一个TimeZone,它根据程序运

  • 问题内容: 我正在尝试显示时间戳记- 我尝试了不同的查询方式,并且还尝试将用作值。似乎没有任何作用。我的目的是让该应用显示以前的素数和它们被发现的时间。该应用程序的初衷是让用户能够关闭/杀死该应用程序,并在重新启动该应用程序时从上次找到的素数恢复计数。如果您有任何暗示,我也将不胜感激。 这是PrimeDBManager类 头等舱 最后是MainActivity类 问题答案: 好的,既然您上传了项目

  • 本文向大家介绍js 显示日期时间的实例(时间过一秒加1),包括了js 显示日期时间的实例(时间过一秒加1)的使用技巧和注意事项,需要的朋友参考一下 html: js: 1:引入js库 2: 以上这篇js 显示日期时间的实例(时间过一秒加1)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 我正在使用Java-Eclipse和oracle SGBD public DefaultTableModel getJoueurData(){

  • 问题内容: 我无法找出(谷歌,阅读mysql参考手册)如何 在几秒钟内在 MySQL中获取 DATETIME的 值。 我不是要从日期时间中提取秒,而是将其转换为秒。 问题答案: 如果要使两个DATETIME值之间存在差异,请使用 : TIMESTAMPDIFF(单位,datetime_expr1,datetime_expr2) 返回,其中和是日期或日期时间表达式。一个表达式可以是日期,另一个可以是

  • 问题内容: 在pandas数据框中有一个datetime列,其值如下: 我想知道如何舍入这些值,摆脱毫秒,仅将日期,小时,分钟和00表示为秒,如下所示: 问题答案: 使用与用于分钟设置: 我想将时间值更改为下一个值: