Android JodaTime将UTC转换为用户的时间

时间:2015-07-28 09:56:27

标签: java android

我在解决这个天真的场景时陷入困境。以下是我将UTC转换为当地时间的设计。

public static DateTime timezoneAwareDate(Date date){
    DateTime input = new DateTime(date,DateTimeZone.UTC);
    DateTime output = input.withZone(DateTimeZone.getDefault());
    Log.d(niftyFunctions.LOG_TAG,new SimpleDateFormat("yyyy-mmm-dd hh:mm").format(output.toDate()));
    return output;
}

这是我的输入日期在UTC中的样子,来自服务器:

2015-07-28 16:30

但这是我在手机上获得的内容,它来自Log.d声明的IST:

2015-030-28 07:30

我对实际发生的事情感到疯狂。有什么帮助吗?

1 个答案:

答案 0 :(得分:1)

所以我使用仅使用本机库的Joda-less解决方案。这是函数

/**
     * Returns localtime for UTC
     *
     * @param date
     * @return
     */
    public static Date timezoneAwareDate(String date){
        // create simpledateformat for UTC dates in database
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
        simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));

        Date output;
        // parse time
        try{
            output = simpleDateFormat.parse(date);
        }catch (Exception e){
            // return current time
            output = new Date();
        }

        return output;
    }