在我的JSP页面中,我试图用时区显示本地日期和时间。它可以是JavaScript,jQuery或JSTL,无论哪个都很容易。
我试过<fmt:formatDate value="<%= new java.util.Date() %>" pattern="MMM d, hh:mm a z"/>
但是时间即将到来CDT甚至我将时区改为东区。
我需要这种模式May 22, 10:34 AM EDT
。
有什么建议吗?
答案 0 :(得分:1)
如果您想知道客户相对于GMT / UTC的时区,请转到:
var d = new Date();
var tz = d.toString().split("GMT")[1].split(" (")[0]; // timezone, i.e. -0700
如果你想要时区的实际名称,你可以试试这个:
var d = new Date();
var tz = d.toString().split("GMT")[1]; // timezone, i.e. -0700 (Pacific Daylight Time)
更新1
根据您的第一条评论,您还可以使用d.getTimezoneOffset()来获取UTC的分钟偏移量。虽然有几个陷阱。
返回的分钟符号(+/-)可能与您的预期相反。如果你落后于UTC 8小时,它将返回480而不是-480。有关更多文档,请参阅MDN或MSDN。 它实际上并没有返回客户端报告的时区,就像我给出的第二个例子一样。只是当前从UTC偏移的分钟数。所以它会根据夏令时变化。 更新2
虽然字符串拆分示例有效,但它们可能会令人困惑。这是一个应该更容易理解的正则表达式版本,可能更快(虽然两种方法都非常快)。
如果您想知道客户相对于GMT / UTC的时区,请转到:
var gmtRe = /GMT([\-\+]?\d{4})/; // Look for GMT, + or - (optionally), and 4 characters of digits (\d)
var d = new Date().toString();
var tz = gmtRe.exec(d)[1]; // timezone, i.e. -0700
如果您想要时区的实际名称,请尝试以下方法:
var tzRe = /\(([\w\s]+)\)/; // Look for "(", any words (\w) or spaces (\s), and ")"
var d = new Date().toString();
var tz = tzRe.exec(d)[1]; // timezone, i.e. "Pacific Daylight Time"
答案 1 :(得分:0)
您可以使用Javascript Date Object获取客户日期。
var clientDate = new Date();
//for day clientDate.getDate();
//for month client.getMonth()
然后使用
获得UTC的差异clientDate.getTimezoneOffset();
//This returns -120 for GMT+2,