将字符串解析为日历中的时区 ICT java

Parse String to TimeZone ICT in Calendar java

我正在尝试将字符串解析为日历,但现在我在 TimeZone 遇到了问题: 我的代码:

public static Calendar convertStringToFullDates(String dateString) {
    Calendar cal = Calendar.getInstance();
    SimpleDateFormat sdf = new SimpleDateFormat(PATTENT_FULL_DATE_FORMAT, Locale.US);
    try {
        cal.setTime(sdf.parse(dateString));
    } catch (ParseException e) {
        DebugLog.e(e.getLocalizedMessage());
    }
    return cal;
}

和字符串:

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";

我试过了,但它抛出了这样的异常:

Unparseable date: "Fri May 11 00:00:00 ICT 2018"

如何解决这个问题?

以下代码适用于我:

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 类 已过时,error-prone 以及它们的格式 API、SimpleDateFormat 也已过时。我建议你应该完全停止使用它们并切换到 modern date-time API.

如果您正在为您的 Android 项目执行此操作,并且您的 Android API 级别仍然不符合 Java-8,请检查 Java 8+ APIs available through desugaring and .

使用现代date-time 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

Trail: Date Time.

了解有关现代 date-time API 的更多信息