gpt4 book ai didi

java - 将日期转换为长日期时出现问题

转载 作者:行者123 更新时间:2023-12-02 02:23:56 25 4
gpt4 key购买 nike

我正在使用 Java 从 Excel 工作表中提取数据,以加载到 Hubspot 中。数据如下:

一旦进入 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;博士

OffsetDateTime.of( 
LocalDate.parse( "2018-12-31" ) ,
LocalTime.MIN ,
ZoneOffset.UTC
)
.toInstant()
.toEpochMilli()

1546214400000

详细信息

避免遗留日期时间类

您正在使用麻烦的旧日期时间类,很久以前,这些类是由于 Java 8 及更高版本中内置的 java.time 类的到来而遗留下来的。

ISO 8601

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

LocalDate ld = LocalDate.parse( "2018-12-31" ) ;

一天中的第一个时刻

显然您需要该日期的 UTC 时间的第一时刻。使用OffsetDateTime常数 ZoneOffset.UTC .

OffsetDateTime odt = OffsetDateTime.of( ld , LocalTime.MIN , ZoneOffset.UTC ) ;

转储到控制台。

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

查看此code run live at IdeOne.com .

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

从纪元开始计数

您似乎想要计算自 UTC 1970 年第一时刻的纪元引用日期 1970-01-01T00:00Z 以来的毫秒数。提取Instant object,java.time 中的基本构建 block 类,并称其为方便的 Instant::toEpochMilli方法。

long millisecondsSinceEpoch = odt.toInstant().toEpochMilli() ;

查看此code run live at IdeOne.com .

1546214400000

走向另一个方向。

Instant instant = Instant.ofEpochMilli( 1_546_214_400_000L ) ;
<小时/>

关于java.time

java.time框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧类 legacy日期时间类,例如 java.util.Date , Calendar , & SimpleDateFormat .

Joda-Time项目,现在位于 maintenance mode ,建议迁移到java.time类。

要了解更多信息,请参阅 Oracle Tutorial 。并在 Stack Overflow 上搜索许多示例和解释。规范为JSR 310 .

从哪里获取java.time类?

ThreeTen-Extra项目通过附加类扩展了 java.time。该项目是 java.time future 可能添加的内容的试验场。您可能会在这里找到一些有用的类,例如 Interval , YearWeek , YearQuarter ,和more .

关于java - 将日期转换为长日期时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48067546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com