服务器导出服务器时间转换浏览器端时区
场景:数据库存储的是服务器时间,需要根据浏览器端客户的时区导出时间。
图示:
C<----- offsetClientTime ----->B<----- offsetServerTime ----->A
server------------------------------utc-------------------------------client
-
客户端获取时间差:
function getTimeOffset(){ var now = new Date(); var offsetHours = now.getHours()-now.getUTCHours(); //A - B return offsetHours; } var offsetClientTime = getTimeOffset(); //得到↑,传递给服务器
-
服务端计算时间差:
var utcNow = DateTime.UtcNow; var serverNow = DateTime.Now; var offsetServerTime = utcNow.Hour - serverNow.Hour; //B - C
-
计算数据库
从数据库取出的时间减去两个时间差var dbTime = ....; var outputTime = dbTime.AddHours(offsetServerTime+offsetClientTime)
-
备注
时区有半小时的情况,所以offsetHours计算应该改为按半小时更合适(如果按照分钟或者秒传递至服务器端会有误差)
如果你觉得这篇文章对你有帮助或者使你有所启发,请点击右下角的推荐按钮,谢谢,:)
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步