首页 > 解决方案 > 给定字符串的日期格式

问题描述

下面的日期是什么格式?

21-MAY-11 12.00.00.000000000 AM

我在下面试过但没有用。任何线索?

DateTimeFormatter formatter_1 = DateTimeFormatter.ofPattern("dd-MMM-yy hh.HH.mm.SSSSSSSSS a");

标签: javadatetime

解决方案


没有可用于它的内置模式。您可以构建一个不区分大小写DateTimeFormatter的 withLocale.ENGLISH来解析此字符串。

演示:

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        String strDateTime = "21-MAY-11 12.00.00.000000000 AM";
        
        DateTimeFormatter dtf = new DateTimeFormatterBuilder()
                .parseCaseInsensitive()
                .appendPattern("uu-MMM-dd hh.mm.ss.SSSSSSSSS a")
                .toFormatter(Locale.ENGLISH);
        
        LocalDateTime ldt = LocalDateTime.parse(strDateTime, dtf);
        System.out.println(ldt);
    }
}

输出:

2021-05-11T00:00

在这里,您可以使用yy代替,uu我更喜欢 u使用y.

ONLINE DEMO

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


推荐阅读