如何将日期和时间从一个时区转换为另一个时区,当GMT格式在android中给出



我有一个特定的日期和时间+10:00 GMT(澳大利亚/墨尔本),这是来自谷歌api在以下格式:-

2015 - 05 - 12 - t14:00:00.000 + 10点

现在,我要根据设备当前时区转换上述时间。

例如:-

以上时间在+5:30 GMT(印度)应该是2015-05-12 9:30:00

我怎样才能实现它?

我下面的代码是:-

    SimpleDateFormat sourceFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    sourceFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
    Date parsed = null;
    try {
        parsed = sourceFormat.parse("2015-05-12 14:00:00");
    } catch (ParseException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    } // => Date is in UTC now
    TimeZone tz = TimeZone.getTimeZone(TimeZone.getDefault().getID());
    SimpleDateFormat destFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    destFormat.setTimeZone(tz);
    String result = destFormat.format(parsed);
    System.out.println(result);

但结果是2015-05-12 19:30,这是错误的…

就此而言,我认为您对getTimeZone("GMT")的看法是错误的

应该使用getTimeZone("GMT+10:00"));,因为GMT是+/-0:00

看看我发布的文档:)

请尝试一下,它在这里工作

 try {

SimpleDateFormat dateFormatGmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
dateFormatGmt.setTimeZone(TimeZone.getTimeZone("GMT+10"));
//Local time zone
SimpleDateFormat dateFormatLocal = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//Time in GMT
String date = dateFormatLocal.format(dateFormatGmt.parse("2015-05-12 14:00:00"));
LogUtil.LOGD(Constants.ACTIVITY_TAG, "Date- " + date);
}catch (ParseException e) {
  e.printStackTrace();
}

您还可以使用Joda库来简化工作。

private String showTimeStringExample(String timeStamp) {
    //timestamp = "2015-05-12T14:00:00.000+10:00"
    // use Joda to parse the time stamp and convert it to java
    final Date date = ISODateTimeFormat.dateTimeParser().parseDateTime(timeStamp).toDate();
    // use the format you had in your question, setting the locale to the device's default
    SimpleDateFormat destFormat = new SimpleDateFormat(
            "yyyy-MM-dd HH:mm:ss",
            getResources().getConfiguration().locale
    );
    // comes out as "2015-05-12 05:00:00 in the UK
    return destFormat.format(date);
}

Gradle依赖性:

compile 'joda-time:joda-time:2.3'

相关内容

  • 没有找到相关文章

最新更新