5

在我的 Android 应用程序服务器中将返回UTC以下格式(yyyy-MM-dd HH:mm:ss) 24 小时的某个日期,我需要将这些时间转换为用户的时区,CST例如IST.

我做了以下代码,但我知道它是否正确,请帮助我以正确的方式进行时区转换。

我将 UTC 日期作为 json 字符串并转换为用户的时区格式并显示 Android 端

private static Date utcDate;
private static DateFormat expireFormat = new SimpleDateFormat(
        "yyyy-MM-dd HH:mm:ss");

        try {
            expireFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
            utcDate = expireFormat.parse("2014-04-01 10:32:00");
            System.out.println(TimeZone.getDefault().getID());
            expireFormat.setTimeZone(TimeZone.getTimeZone(TimeZone.getDefault().getID()));
            System.out.println(expireFormat.format(utcDate));
        } catch (ParseException e) {
            e.printStackTrace();
        }

    output of the code:
    Asia/Calcutta
    2014-04-01 16:02:00
4

1 回答 1

4

如果重新格式化的字符串确实是您想要得到的,那么整体方法是可以的。

虽然有一些问题

  1. SimpleDateFormat不是线程安全类。将其设置为服务器内的静态字段是一个问题!

  2. 关于使用静态字段来保存中间 Date 对象,与 #1 相同。

  3. “CST”是中国标准时间吗?中部标准时间(美国或澳大利亚)?古巴标准时间?三个字母的缩写 TimeZone 通常是个坏消息。如果可能,请尝试使用 Olson 名称或别名。

  4. 这是服务器端还是安卓?如果它是服务器,您可能会受益于新的 Java 8 API for DateTime 处理。

于 2014-03-31T18:19:44.693 回答