繁体   English   中英

如何将当前GMT时区的字符串转换为正常日期时间

[英]How convert string with current GMT time zone to to normal date time

我有的字符串是

Mon Mar 04 12:19:50 GMT+05:30 2019

我想要将其转换为

2019-03-04T12:19:50

我试着做:

 SimpleDateFormat sdf3 = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ENGLISH);

 Date d1 = null;
 try{
     d1 = sdf3.parse(String.valueOf(currentTime));    
 }catch (Exception e){ e.printStackTrace(); }

 System.out.println("check..." + d1);

但这行不通

我怎样才能做到这一点? 请帮助我弄清楚逻辑。

您需要做的第一件事是解析String

String value = "Mon Mar 04 12:19:50 GMT+05:30 2019";
DateTimeFormatter formatIn = DateTimeFormatter.ofPattern("EE MMM dd HH:mm:ss O yyyy", Locale.ENGLISH);
ZonedDateTime zdt = ZonedDateTime.parse(value, formatIn);

现在,您可以根据需要格式化值

DateTimeFormatter formatOut = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss", Locale.ENGLISH);
String formatted = zdt.format(formatOut);
// 2019-03-04T12:19:50

要么

String formatted = zdt.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME);
// 2019-03-04T12:19:50 

但是如果我要这样做,我可能会做类似...

ZoneId zoneId = ZoneId.systemDefault();
LocalDateTime ldt = zdt.withZoneSameInstant(zoneId).toLocalDateTime();
String formatted = ldt.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME);
// 2019-03-04T17:49:50

然后是当前时区

我建议您看一下日期和时间类

如@Jon Skeet所述,使用java.time是一个好主意。 使用Date.toInstant ,并在您的偏移量处将其转换为LocalDateTime

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.Date;
import java.util.Locale;

public class SO201904030814 {

    public SO201904030814() {
    }

    public static void main(String[] args) throws ParseException {
        SimpleDateFormat sdf3 = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ENGLISH);

        Date d1 = sdf3.parse(String.valueOf("Mon Mar 04 12:19:50 GMT+05:30 2019"));

        LocalDateTime dateTime = LocalDateTime.ofInstant(d1.toInstant(), ZoneOffset.of("+05:30"));

        System.out.println("check..." + d1 + " vs " + dateTime);

    }

}

HTH!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM