解析时间字符串和更改时区

时间:2013-01-17 07:36:11

标签: java android

我正在从提供HH:mm:ss形式的时间戳的web服务中检索数据我正在使用SimpleDateFormat将此字符串转换为日期对象,然后根据需要更改其时区,并将其从24小时转换为12小时时间。

问题:当一个时间输入12点时,它看起来像00:00:00 所以12:05是00:05:00 当我得到结果他们看起来像这样。

次以22:00:00加入00:01:00

次检索10:00 pm0:01 am

我一直在四处寻找是否有办法解决它,但我觉得我需要制作一个特殊情况并自己解析字符串,如果它在小时的地方有0。

非常感谢任何帮助。

public String parseTime(String time) {
    String mTime = null;
    TimeZone thisTimeZone = TimeZone.getDefault();
    TimeZone ourTimeZone = TimeZone.getTimeZone("America/Los_Angeles");
    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss", Locale.US);
    SimpleDateFormat sdfThisTimeZone = new SimpleDateFormat("K:mm:a",
            Locale.getDefault());

    Date date = null;
    sdfThisTimeZone.setTimeZone(thisTimeZone);
    sdf.setTimeZone(ourTimeZone);
    try {
        date = sdf.parse(time);
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    mTime = sdfThisTimeZone.format(date.getTime());
//**********************************New: Does Not Work********************************
            DecimalFormat nft = new DecimalFormat("00"); mTime = nft.format(mTime);
//**********************************New **********************************************
    return mTime;
}

我已经尝试过使用DecimalFormat的行,但我现在只是将它复制到代码中,看看它是否可行。不幸的是它让我的应用崩溃了。我发布的代码是在异步任务中执行的,所以我不确定这是否有任何区别但仍然不是你的帮助。最终我会解决这个问题。但是现在这是一个如此小的细节,只在凌晨12点发生1小时,我正在转向更大的问题。如果有人能够对此有所了解那就太棒了。

1 个答案:

答案 0 :(得分:0)

String getConvertedDateTime(String dateTime){

    String convertedDateTime = dateTime;

    if (convertedDateTime != null

            && !convertedDateTime.equalsIgnoreCase("")

            && !convertedDateTime.equalsIgnoreCase("null")) {

        try {

            SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");

            Calendar calendar = Calendar.getInstance();

            java.util.Date convertedDate = formatter
                    .parse(convertedDateTime);
        formatter.setTimeZone(TimeZone.getTimeZone("America/Los_Angeles"));
        convertedDateTime = formatter.format(convertedDate.getTime());

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    return convertedDateTime;
}