2 回答

TA貢獻1804條經驗 獲得超3個贊
正如@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);
}
}

TA貢獻1828條經驗 獲得超13個贊
您需要做的第一件事是解析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);
現(xiàn)在您可以根據(jù)需要格式化值
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
然后它在當前時區(qū)
添加回答
舉報