【发布时间】:2015-03-04 19:35:13
【问题描述】:
在 android 中,我从免费网络服务器上的 MySQL 数据库下载日期信息,然后使用以下方法将其转换为 Date 对象:
注意:服务器时间比多伦多提前 5 小时。
public static Date getDateFromSQLDate(String sqldate) {
try {
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());
Date date = (Date) formatter.parse(sqldate);
TimeZone targetTimeZone = TimeZone.getDefault();
TimeZone serverTimeZone = TimeZone.getTimeZone("Europe/London");
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.setTimeZone(serverTimeZone);
calendar.add(Calendar.MILLISECOND, serverTimeZone.getRawOffset() * -1);
if (serverTimeZone.inDaylightTime(calendar.getTime())) {
calendar.add(Calendar.MILLISECOND, calendar.getTimeZone().getDSTSavings() * -1);
}
calendar.add(Calendar.MILLISECOND, targetTimeZone.getRawOffset());
if (targetTimeZone.inDaylightTime(calendar.getTime())) {
calendar.add(Calendar.MILLISECOND, targetTimeZone.getDSTSavings());
}
return calendar.getTime();
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
这似乎不起作用..
问题在于日期与服务器的时区有关。一次下载可能会与时间混淆,因为他们不知道它不在自己的时区。
我有一个 Date 对象,有没有办法可以检索用户手机所在位置的时区,然后将该 Date 对象修改为他们自己的时区?
谢谢
编辑:
How to get TimeZone from android mobile?
这得到了一个时区对象,但是我如何用它来改变一个 Date 对象呢?
【问题讨论】:
标签: java android date datetime timezone