gpt4 book ai didi

java - 减去天数而不影响时间

转载 作者:行者123 更新时间:2023-12-05 09:30:52 25 4
gpt4 key购买 nike

我有以下一段代码。我正在尝试获取恰好 10 天前当前时间的纪元值 t。但是当我使用 https://www.epochconverter.com/t 转换回日期/时间时, 打印结果的时间不正确。我错过了什么?

        long t = LocalDateTime.now()
.minusDays(10)
.toEpochSecond(ZoneOffset.UTC) * 1000;


System.out.println(t);

最佳答案

所以 LocalDateTime 是您当前时区的时间表示,然后您可以从 UTC 时区的纪元中获取秒数。但这没有做的,是将时间转换为 UTC,它保持不变,所以如果是本地时间下午 6 点,这将生成下午 6 点的 UTC 时间。

您需要做的是考虑时区。以下每个语句将打印相同的值(以秒为单位),当我将它们插入 https://www.epochconverter.com 时, 它们给出了它们生成时的正确“本地时间”。

import java.time.Instant;
import java.time.LocalDateTime;
import java.time.OffsetDateTime;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.util.TimeZone;

public class Test {

public static void main(String[] args) {
TimeZone tz = TimeZone.getDefault();
ZoneOffset offset = tz.toZoneId().getRules().getStandardOffset(Instant.now());
long t = LocalDateTime.now()
.minusDays(10)
.toEpochSecond(offset);
System.out.println(t);
System.out.println(ZonedDateTime.now().minusDays(10).toEpochSecond());
System.out.println(OffsetDateTime.now(ZoneOffset.UTC).minusDays(10).toEpochSecond());
}
}

可能还有其他几种方法可以做到这一点,但这些是我的基本方法。

因此,例如,我得到了 1631350948 的输出,当我将它插入转换程序时,它打印出来

GMT: Saturday, 11 September 2021 9:02:28 AM
Your time zone: Saturday,11 September 2021 7:02:28 PM GMT+10:00
Relative: 10 days ago

当我对输出进行采样时,“本地时间”是正确的

关于java - 减去天数而不影响时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69266027/

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