日期转换为本地时区

时间:2016-06-28 08:25:33

标签: android android-studio

你好,我通过简单的日期格式方法转换日期,但它返回错误的输出时间,就像我需要这个

输入:2016-06-28T08:19:05.721Z

输出应为:13:49:05

但它回归:08:19:05

   SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
        Date newDate = null;
        try {
            newDate = format.parse("2016-06-28T08:19:05.721Z");
        } catch (ParseException e) {
            e.printStackTrace();
        }

        format = new SimpleDateFormat("hh:mm a");
        String date = format.format(newDate);

5 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

区域设置与模式一起传递给SimpleDateFormat。

SimpleDateFormat sd = new SimpleDateFormat("EEEE dd MMM yyyy", Locale.ENGLISH);

答案 2 :(得分:0)

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
        Date newDate = null;
        try {
            newDate = format.parse("2016-06-28T08:19:05.721Z");
        } catch (ParseException e) {
            e.printStackTrace();
        }

        format = new SimpleDateFormat("HH:mm a");
        String date = format.format(newDate);

答案 3 :(得分:0)

更改解析模式

"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"

"yyyy-MM-dd'T'HH:mm:ss.SSSX"

以便实际考虑输入时区(而不只是期望文字Z)。

对于格式化,使用默认时区,假设它是UTC + 05:30,您将获得所需的输出。

答案 4 :(得分:0)

   SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
    Date newDate = null;
    try {
        newDate = format.parse("2016-06-28T08:19:05.721Z");
    } catch (ParseException e) {
        e.printStackTrace();
    }
    format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String date = format.format(newDate);


    format .setTimeZone(TimeZone.getTimeZone("UTC"));
    Date parsed = null; // => Date is in UTC now
    try {
        parsed = format .parse(date);
    } catch (ParseException e) {
        e.printStackTrace();
    }

    TimeZone tz = TimeZone.getTimeZone("Asia/Kolkata");
    SimpleDateFormat destFormat = new SimpleDateFormat("HH:mm:ss");
    destFormat.setTimeZone(tz);

    date = destFormat.format(parsed);
    Log.e("date",date);

我通过这样做解决了...谢谢所有:)