我正在以格式MM/dd/yyyy hh:mm a z
从数据库中读取时间现在我想在用户本地时区显示此时间。所以我的问题是:
更新 所以我决定在服务器上进行转换,因此我的方法定义如下,服务器的参数日期和客户端时间的时区偏移量。
public String convertToLocalDateTime(Date dateFromDB, Integer offSetMins) {
//1. dbDateInUTC = Convert dateFromDB to UTC
//2. return offSetMins + dbDateInUTC;
}
我不知道如何做第(1)步。有什么建议吗?
答案 0 :(得分:1)
为了确保用户获得它的时区,您可以在客户端进行此操作,为此您可以使用Moment.js或date.js等库。
只需获取服务器的日期,将其转换为long:
Date d = // date from server
long milliseconds = d.getTime();
发送给客户并获得抵消:
时区偏移是UTC与本地时间之间的差异(以分钟为单位)。请注意,这意味着如果本地时区落后于UTC,则偏移量为正,如果前置,则偏移量为负。例如,如果您的时区是UTC + 10(澳大利亚东部标准时间),则将返回-600。夏令时可以防止该值即使对于给定的区域设置也是常量。
var offset = new Date().getTimezoneOffset();
然后你必须得到更正的日期 1分钟= 60.000毫秒:
var dateInMilliseconds = dateFromServer - (offset * 60000);
此外,如果@jon建议你要告诉服务器客户端的时区,请获取offset
并将其发送给java以转换日期:
long offsetMillis = offset * 60000;
Date d = new Date(offsetMillis);
答案 1 :(得分:1)
在我的实践中,为避免混淆和混淆,最好:
因此,服务器端以UTC和客户端的所有日期/时间在本地TZ中。