Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Calendar java中将字符串解析为时区ICT_Java_Android_Date_Kotlin_Calendar - Fatal编程技术网

在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类已经过时且容易出错,它们的格式化API
SimpleDataFormat
也是如此。我建议你完全停止使用它们,转而使用

如果您是为您的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中运行时,它会抛出如上所述的异常,我不明白为什么