在Calendar java中将字符串解析为时区ICT
我正在尝试将字符串解析为日历,但现在我在时区遇到问题: 我的代码: 和字符串:在Calendar java中将字符串解析为时区ICT,java,android,date,kotlin,calendar,Java,Android,Date,Kotlin,Calendar,我正在尝试将字符串解析为日历,但现在我在时区遇到问题: 我的代码: 和字符串: String str = "Fri May 11 00:00:00 ICT 2018"; 和模式: private static final String PATTENT_FULL_DATE_FORMAT = "EEE MMM dd HH:mm:ss z yyyy"; 我尝试过,但它引发了如下异常: 不可撤销日期:“2018年5月11日星期五00:00:00” 如何解决此问
String str = "Fri May 11 00:00:00 ICT 2018";
和模式:
private static final String PATTENT_FULL_DATE_FORMAT = "EEE MMM dd HH:mm:ss z yyyy";
我尝试过,但它引发了如下异常:
不可撤销日期:“2018年5月11日星期五00:00:00”
如何解决此问题?以下代码适用于我:
public class Main {
public static void main(String[] args) throws ParseException {
String str = "Fri May 11 00:00:00 ICT 2018";
final String PATTENT_FULL_DATE_FORMAT = "EEE MMM dd HH:mm:ss z yyyy";
SimpleDateFormat sdf = new SimpleDateFormat(PATTENT_FULL_DATE_FORMAT, Locale.US);
Date date = sdf.parse(str);
System.out.println(date);
}
}
请注意,java.util
date-time类已经过时且容易出错,它们的格式化APISimpleDataFormat
也是如此。我建议你完全停止使用它们,转而使用
如果您是为您的Android项目执行此操作,并且您的Android API级别仍然不符合Java-8,请检查并重试
使用现代日期时间API:
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
String str = "Fri May 11 00:00:00 ICT 2018";
final String PATTENT_FULL_DATE_FORMAT = "EEE MMM dd HH:mm:ss z yyyy";
DateTimeFormatter dtf = DateTimeFormatter.ofPattern(PATTENT_FULL_DATE_FORMAT, Locale.US);
ZonedDateTime zdt = ZonedDateTime.parse(str, dtf);
System.out.println(zdt);
// Print the date-time in a custom format
System.out.println(zdt.format(dtf));
}
}
2018-05-11T00:00+07:00[Asia/Bangkok]
Fri May 11 00:00:00 ICT 2018
输出:
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
String str = "Fri May 11 00:00:00 ICT 2018";
final String PATTENT_FULL_DATE_FORMAT = "EEE MMM dd HH:mm:ss z yyyy";
DateTimeFormatter dtf = DateTimeFormatter.ofPattern(PATTENT_FULL_DATE_FORMAT, Locale.US);
ZonedDateTime zdt = ZonedDateTime.parse(str, dtf);
System.out.println(zdt);
// Print the date-time in a custom format
System.out.println(zdt.format(dtf));
}
}
2018-05-11T00:00+07:00[Asia/Bangkok]
Fri May 11 00:00:00 ICT 2018
有关现代日期时间API的详细信息,请访问我无法复制。您的代码在我的Java11.Me上也运行得很好,但有一个问题是相同的代码,当我在AndroidStudio中运行时,它会抛出如上所述的异常,我不明白为什么