java 解析日期 GRAVE null

java parse date GRAVE null

在此代码中,

        String str="Sun Feb 07 00:27:16 CET 2021";
    SimpleDateFormat sdf=new SimpleDateFormat("E MMM dd HH:mm:ss z yyyy");
    try {
        java.util.Date date=sdf.parse(str);
        System.out.print(date.getTime());
    } catch (ParseException ex) {
        Logger.getLogger(NewClass.class.getName()).log(Level.SEVERE, null, ex);
    }

显示 坟墓:无 java.text.ParseException:无法解析的日期:“Sun Feb 07 00:27:16 CET 2021” 请问怎么解决!

您的代码有两个问题:

  1. 格式不正确:您使用的是 E 而不是 EEE
  2. 不使用 Locale:养成使用日期时间 parsing/formatting API 的适用 Locale 的习惯。您的日期时间字符串在 English 中,因此您应该使用特定于英语的语言环境,例如Locale.ENGLISHLocale.US

正确代码:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Locale;

public class Main {
    public static void main(String[] args) throws ParseException {
        String str = "Sun Feb 07 00:27:16 CET 2021";
        SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
        java.util.Date date = sdf.parse(str);
        System.out.print(date.getTime());
    }
}

输出:

1612654036000

java.util 的日期时间 API 及其格式 API、SimpleDateFormat 已过时且容易出错。建议完全停止使用它们并切换到 modern date-time API.

  • 出于任何原因,如果您必须坚持使用 Java 6 或 Java 7,您可以使用 ThreeTen-Backport,它向后移植了大部分 java.time Java 6 和 7 的功能。
  • 如果您正在为 Android 项目工作,并且您的 Android API 水平仍然不符合 Java-8,请检查 Java 8+ APIs available through desugaring and

使用现代日期时间 API:

import java.text.ParseException;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

public class Main {
    public static void main(String[] args) throws ParseException {
        String str = "Sun Feb 07 00:27:16 CET 2021";
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss z uuuu", Locale.ENGLISH);
        ZonedDateTime zdt = ZonedDateTime.parse(str, dtf);
        System.out.println(zdt);
        System.out.println(zdt.toInstant().toEpochMilli());
    }
}

输出:

2021-02-07T00:27:16+01:00[Europe/Paris]
1612654036000

Trail: Date Time.

了解有关现代日期时间的更多信息 API