首页 > 解决方案 > 使用 UTC 将 LocalDate 转换为 TimeStamp

问题描述

我将 LocalDate 作为输入,并希望将其转换为这种格式以在 oracle DB 中搜索。

input - "2010-10-10"

Output- 10-OCT-10 07.39.02.713000000 AM UTC

我尝试使用 TimeStamp 和 DateTime 但分别以这些格式获取日期。

2020-10-10 00:00:00.0 
2020-10-10T00:00:00.000+05:30

我用了

Timestamp.valueOf(startDate.atStartOfDay());
DateTime.parse(startDate.toString());

你能帮我么?先感谢您

更新。

标签: javasqloraclespring-bootdate

解决方案


解析给定的字符串LocalDate并将其转换为ZonedDateTimeusing LocalDate#atStartOfDay(ZoneId)

import java.time.LocalDate;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

public class Testing {
    public static void main(String[] args) {
        LocalDate date = LocalDate.parse("2010-10-10");
        ZonedDateTime zdt = date.atStartOfDay(ZoneId.of("Etc/UTC"));
        System.out.println(zdt);

        // Custom format
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss.SSS a zzz", Locale.ENGLISH);
        System.out.println(dtf.format(zdt));
    }
}

输出:

2010-10-10T00:00Z[Etc/UTC]
2010-10-10 00:00:00.000 AM UTC

Trail: Date Time了解更多关于java.time现代日期时间 API *的信息。


* 出于任何原因,如果您必须坚持使用 Java 6 或 Java 7,则可以使用ThreeTen-Backport,它将大部分java.time功能向后移植到 Java 6 和 7。如果您正在为 Android 项目和 Android API 工作level 仍然不符合 Java-8,请检查Java 8+ APIs available through desugaringHow to use ThreeTenABP in Android Project


推荐阅读