Android 日期转换为本地时区

Android 日期转换为本地时区,android,android-studio,Android,Android Studio,您好,我转换的简单日期格式的方法,但它返回错误的输出时间像我需要这个 输入:2016-06-28008: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.pa

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

输入:2016-06-28008: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);

SimpleDateFormat
类使用此构造函数:

SimpleDateFormat
类使用此构造函数:

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

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

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

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

更改解析模式

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

因此,输入时区实际上被考虑在内(而不仅仅是期望文本
Z


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

更改解析模式

"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
   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);

因此,输入时区实际上被考虑在内(而不仅仅是期望文本
Z

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

   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);
我这样做就解决了……谢谢大家:)


我通过这样做解决了…谢谢大家:)

将区域设置传递给格式输入是2016-06-28T08:19:05.721Z,为什么输出是13:49:05?您想做什么?请进一步解释。将区域设置传递给格式输入为2016-06-28T08:19:05.721Z,为什么输出为13:49:05?您想做什么?请多解释。