首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >IST和KST中的简单数据格式

IST和KST中的简单数据格式
EN

Stack Overflow用户
提问于 2014-03-06 05:45:05
回答 2查看 10.5K关注 0票数 1

我使用以下简单的日期格式来解析字符串,

代码语言:javascript
运行
复制
SimpleDateFormat dateFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy");
String time = "Wed Mar 06 21:00:00 IST 2014";
Date date = dateFormat.parse(time);

这不会引发任何错误,

代码语言:javascript
运行
复制
SimpleDateFormat dateFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy");
String time = "Wed Mar 06 21:00:00 KST 2014";
Date date = dateFormat.parse(time);

引发无法解析的日期异常。

IST -印度标准时间 *KST -韩国标准时间*

由于例外情况,我决定删除时区。

还有别的方法可以解决这个问题吗?

请帮帮忙

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-06 05:52:54

这两个日期都是无效的,因此都会抛出错误:

代码语言:javascript
运行
复制
String time = "Wed Mar Thu 21:00:00 IST 2014";

清华是无效的,因为一周中的一天已经被EEE - Wed组合所消耗。你需要在那里安排一个月的一天。

尝试解析以下日期,它应该适用于您的情况:

代码语言:javascript
运行
复制
String time = "Wed Mar 12 21:00:00 KST 2014";
票数 3
EN

Stack Overflow用户

发布于 2014-03-06 05:51:18

试试这段代码,看看KST是否是有效的时区id。

代码语言:javascript
运行
复制
    String[] timezoneIdArr = TimeZone.getAvailableIDs();
    for (String tzId : timezoneIdArr) {
        System.out.println(tzId);
    }

如果没有,则输入区域id,如“亚洲/首尔”之类的。那应该管用。

请注意,我还没有试过。请检查时区的准确拼写。

更新:

试试下面的代码。看看KST的产量。取消评论,并尝试与亚洲/首尔。供您参考,取消评论,看看PST是如何工作的。

代码语言:javascript
运行
复制
private static void calTest() {
    String zone = "KST";
    //String zone = "Asia/Seoul";
    //String zone = "PST";

    long millis = System.currentTimeMillis();

    //get calendar of Korea time zone.
    Calendar kst = Calendar.getInstance(TimeZone.getTimeZone(zone));

    //set its time to a UTC millisecond value. probably redundant, but just to demonstrate
    kst.setTimeInMillis(millis);

    String formattedKst = formatTime(kst);
    System.out.println(" Original - " + formattedKst);

    //now we convert the formatted string back to a Calendar . 
    Calendar parsedKst = parseTime(formattedKst, zone);
    System.out.println(" Parsed - ");
    System.out.println("" + parsedKst.get(Calendar.YEAR) + "-"
             + (parsedKst.get(Calendar.MONTH) + 1) + "-"
             + parsedKst.get(Calendar.DATE) + " "
             + parsedKst.get(Calendar.HOUR_OF_DAY) + ":"
             + parsedKst.get(Calendar.MINUTE) + ":"
             + parsedKst.get(Calendar.SECOND) + "."
             + parsedKst.get(Calendar.MILLISECOND) + " "
             + parsedKst.getTimeZone().getID() + " "
             + parsedKst.getTimeZone().getDisplayName() + " "
            );




}

private static Calendar parseTime(String formattedDateTime, String ID) {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX zzz");
    sdf.setTimeZone(TimeZone.getTimeZone(ID));
    sdf.setLenient(false);
    try {
        sdf.parse(formattedDateTime);
    } catch (ParseException e) {
        e.printStackTrace();
    }
    return sdf.getCalendar();
}

private static String formatTime(Calendar cal) {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX zzz");
    sdf.setCalendar(cal);
    return sdf.format(cal.getTime());
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22216038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档