当前位置:  开发笔记 > 编程语言 > 正文

以UTC格式将LocalDateTime转换为LocalDateTime

如何解决《以UTC格式将LocalDateTime转换为LocalDateTime》经验,为你挑选了5个好方法。

以UTC格式将LocalDateTime转换为LocalDateTime.

LocalDateTime convertToUtc(LocalDateTime date) {

    //do conversion

}

我在网上搜索过.但没有得到解决方案



1> 小智..:

我个人更喜欢

LocalDateTime.now(ZoneOffset.UTC);

因为它是最易读的选择.



2> Leon Radley..:

有一种更简单的方法

LocalDateTime.now(Clock.systemUTC())


很好,但没有回答原来的问题.

3> 小智..:

LocalDateTime不包含区域信息.ZonedDatetime确实如此.

如果要将LocalDateTime转换为UTC,则需要按ZonedDateTime包装.

你可以像下面这样转换.

LocalDateTime ldt = LocalDateTime.now();
System.out.println(ldt.toLocalTime());

ZonedDateTime ldtZoned = ldt.atZone(ZoneId.systemDefault());

ZonedDateTime utcZoned = ldtZoned.withZoneSameInstant(ZoneId.of("UTC"));

System.out.println(utcZoned.toLocalTime());


`ZoneOffset.UTC`是`ZoneI d.of("UTC")`的一个很好的替代品
这是正确的,虽然没有技术包装.`ldt.atZone(ZoneId.systemDefault()).withZoneSameInstant(ZoneId.of("UTC"))`虽然简洁仍然传达了足够的意义,不需要分区实例变量.

4> patelb..:

使用以下.它使用本地日期时间并使用时区将其转换为UTC.您不需要创建它的功能.

ZonedDateTime nowUTC = ZonedDateTime.now(ZoneOffset.UTC);
System.out.println(nowUTC.toString());

如果需要获取ZonedDateTime的LocalDateTime部分,则可以使用以下内容.

nowUTC.toLocalDateTime();

这是我在我的应用程序中使用的静态方法,用于在mysql中插入UTC时间,因为我无法将默认值UTC_TIMESTAMP添加到datetime列.

public static LocalDateTime getLocalDateTimeInUTC(){
    ZonedDateTime nowUTC = ZonedDateTime.now(ZoneOffset.UTC);

    return nowUTC.toLocalDateTime();
}



5> ManoDestra..:

这是一个简单的小实用程序类,可用于将本地日期时间从区域转换为区域,包括直接将实时方法从当前区域转换为UTC(使用main方法,以便您可以运行它并查看结果一个简单的测试):

import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;

public final class DateTimeUtil {
    private DateTimeUtil() {
        super();
    }

    public static void main(final String... args) {
        final LocalDateTime now = LocalDateTime.now();
        final LocalDateTime utc = DateTimeUtil.toUtc(now);

        System.out.println("Now: " + now);
        System.out.println("UTC: " + utc);
    }

    public static LocalDateTime toZone(final LocalDateTime time, final ZoneId fromZone, final ZoneId toZone) {
        final ZonedDateTime zonedtime = time.atZone(fromZone);
        final ZonedDateTime converted = zonedtime.withZoneSameInstant(toZone);
        return converted.toLocalDateTime();
    }

    public static LocalDateTime toZone(final LocalDateTime time, final ZoneId toZone) {
        return DateTimeUtil.toZone(time, ZoneId.systemDefault(), toZone);
    }

    public static LocalDateTime toUtc(final LocalDateTime time, final ZoneId fromZone) {
        return DateTimeUtil.toZone(time, fromZone, ZoneOffset.UTC);
    }

    public static LocalDateTime toUtc(final LocalDateTime time) {
        return DateTimeUtil.toUtc(time, ZoneId.systemDefault());
    }
}

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有