为了账号安全,请及时绑定邮箱和手机立即绑定

java GMT 日期时间解析

java GMT 日期时间解析

眼眸繁星 2023-01-05 15:33:22

我有一个像下面这样的字符串


Fri May 31 2019 05:08:40 GMT-0700 (PDT)

我想将其转换为类似yyyy-MM-dd.


我试过了。


String date1 = "Fri May 31 2019 05:08:40 GMT-0700 (PDT)";

DateTimeFormatter f = DateTimeFormatter.ofPattern( "E MMM dd HH:mm:ss z uuuu" ).withLocale( Locale.US );


ZonedDateTime zdt = ZonedDateTime.parse( date1 , f );

LocalDate ld = zdt.toLocalDate();

DateTimeFormatter fLocalDate = DateTimeFormatter.ofPattern( "yyyy-MM-dd" );

String output = ld.format( fLocalDate ) ;

我收到错误:


Exception in thread "main" java.time.format.DateTimeParseException: Text 

'Fri May 31 2019 05:08:40 GMT-0700 (PDT)' could not be parsed at index 13

at java.time.format.DateTimeFormatter.parseResolved0(Unknown Source)

at java.time.format.DateTimeFormatter.parse(Unknown Source)

at java.time.ZonedDateTime.parse(Unknown Source)


查看完整描述

3 回答

?
慕慕森

TA贡献1607条经验 获得超17个赞

你的格式化程序的模式是错误的。缺少年份 ( "yyyy") 且时区不匹配。要匹配它,您需要同时使用两者z,并且Z还需要为 GMT 添加不匹配的文本,例如"'GMT'Z (z)".

试试这个:

"E MMM dd yyyy HH:mm:ss 'GMT'Z (z)"


查看完整回答
反对 回复 2023-01-05
?
手掌心

TA贡献0条经验 获得超3个赞

正如您在这里看到的,您可以使用以下模式:

public static void main(String[] args) throws Exception {

    String date1 = "Fri May 31 2019 05:08:40 GMT-0700 (PDT)";

    DateTimeFormatter f = DateTimeFormatter.ofPattern( "EEE MMM dd yyyy HH:mm:ss 'GMT'Z '('z')'" ).withLocale( Locale.US );


    ZonedDateTime zdt = ZonedDateTime.parse( date1 , f );

    LocalDate ld = zdt.toLocalDate();

    DateTimeFormatter fLocalDate = DateTimeFormatter.ofPattern( "yyyy-MM-dd" );

    String output = ld.format( fLocalDate ) ;

    System.out.println(output);

}

输出:


2019-05-31


查看完整回答
反对 回复 2023-01-05
?
慕丝7291255

TA贡献1595条经验 获得超6个赞

由于您只需要yyyy-MM-dd格式的日期,请尝试以下代码:


   String date1 = "Fri May 31 2019 05:08:40 GMT-0700";


   //this format is good enough to read required data from your String

   DateFormat df1 = new SimpleDateFormat("EEE MMM dd yyyy HH:mm:ss");


   //format you require as final output

   DateFormat df2 = new SimpleDateFormat("yyyy-MM-dd");


   //convert String to date ( with required attributes ) and then format to target

   System.out.println(df2.format(df1.parse(date1)));


查看完整回答
反对 回复 2023-01-05

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信