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,我使用Java从Excel工作表中提取数据,加载到Hubspot中。 以下是数据的外观: 该日期2018-12-31一旦进入侧轮毂位置,将变为2017年12月31日。 这是错误的 这是我的密码: SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); df.setTimeZone(TimeZone.getTimeZone("UTC")); Date dt = null;

我使用Java从Excel工作表中提取数据,加载到Hubspot中。 以下是数据的外观:

该日期2018-12-31一旦进入侧轮毂位置,将变为2017年12月31日。 这是错误的

这是我的密码:

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
                df.setTimeZone(TimeZone.getTimeZone("UTC"));
                Date dt = null;
                try {
                    dt = df.parse(member.getUsageEndDate());
                } catch (java.text.ParseException e3) {
                    //dt = null;
                    e3.printStackTrace();
                }                                      
                Long l = dt.getTime(); 
如果我在记事本中打开数据,它看起来是这样的:2018年5月31日

我怎样才能正确地转换它?

tl;博士 1546214400000

细节 避免遗留日期时间类 您使用的是很麻烦的旧日期时间类,这是由于java 8和更高版本中内置的java.time类的出现而遗留下来的

ISO 8601 您的输入字符串恰好符合标准格式。在java.time解析/生成字符串时默认使用这些格式。因此,无需指定格式化模式

LocalDate ld = LocalDate.parse( "2018-12-31" ) ;
一天中的第一刻 显然,您需要在UTC的一天中的第一个时刻。与常量连用

转储到控制台

System.out.println( "odt.toString(): " + odt );
看这个

odt.toString():2018-12-31T00:00Z

纪元 您似乎想要自1970年第一个时刻的历元参考日期(UTC,1970-01-01T00:00Z)起的毫秒计数。提取一个对象,java.time中的基本构建块类,并调用其handy方法

看这个

1546214400000

往另一个方向走

Instant instant = Instant.ofEpochMilli( 1_546_214_400_000L ) ;

关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,&

该项目现已启动,建议迁移到类

要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是

从哪里获得java.time类

  • ,及以后
    • 内置的
    • 标准JavaAPI的一部分,带有捆绑实现
    • Java9添加了一些次要功能和修复
    • 大部分java.time功能都在中向后移植到Java6和Java7
    • 该项目专门为Android采用了ThreeTen Backport(如上所述)
该项目使用其他类扩展了java.time。这个项目是java.time将来可能添加的一个试验场。您可以在这里找到一些有用的类,如、、和。

tl;博士 1546214400000

细节 避免遗留日期时间类 您使用的是很麻烦的旧日期时间类,这是由于java 8和更高版本中内置的java.time类的出现而遗留下来的

ISO 8601 您的输入字符串恰好符合标准格式。在java.time解析/生成字符串时默认使用这些格式。因此,无需指定格式化模式

LocalDate ld = LocalDate.parse( "2018-12-31" ) ;
一天中的第一刻 显然,您需要在UTC的一天中的第一个时刻。与常量连用

转储到控制台

System.out.println( "odt.toString(): " + odt );
看这个

odt.toString():2018-12-31T00:00Z

纪元 您似乎想要自1970年第一个时刻的历元参考日期(UTC,1970-01-01T00:00Z)起的毫秒计数。提取一个对象,java.time中的基本构建块类,并调用其handy方法

看这个

1546214400000

往另一个方向走

Instant instant = Instant.ofEpochMilli( 1_546_214_400_000L ) ;

关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,&

该项目现已启动,建议迁移到类

要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是

从哪里获得java.time类

  • ,及以后
    • 内置的
    • 标准JavaAPI的一部分,带有捆绑实现
    • Java9添加了一些次要功能和修复
    • 大部分java.time功能都在中向后移植到Java6和Java7
    • 该项目专门为Android采用了ThreeTen Backport(如上所述)

该项目使用其他类扩展了java.time。这个项目是java.time将来可能添加的一个试验场。您可以在这里找到一些有用的课程,例如、、和。

在格林尼治标准时间,实际上是2018年12月31日星期一上午12:00:00,有效!格林尼治标准时间正在运行。如果有任何问题,我会告诉你。2018年12月31日星期一03:00:00东部???在格林尼治标准时间内,实际上是2018年12月31日星期一12:00:00开始工作!格林尼治标准时间正在运行。如果有任何问题,我会告诉你。2018年12月31日星期一03:00:00东部???