我在解决这个天真的场景时陷入困境。以下是我将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
我对实际发生的事情感到疯狂。有什么帮助吗?
答案 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;
}