我想在我的网页上使用此JavaScript代码显示UTC日期。
<script>
function myDate()
{
var now = new Date();
var d = new Date(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate());
var x = document.getElementById("demo");
x.innerHTML=d;
}
</script>
使用此代码,我将UTC日期显示为本地字符串,如下所示:“Thu Jul 04 2013 00:00:00 GMT + 0530(India Standard Time)”
我不希望显示带有本地时间偏移(GMT + 0530(IST))的字符串,而是希望时间显示为UTC字符串格式
答案 0 :(得分:2)
不同浏览器返回的日期格式不同
从您可以使用的日期删除GMT OFFSET替换
var d = new Date(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate());
d = d.toString().replace(/GMT.+/,"");
答案 1 :(得分:1)
首先,问题是您通过传递UTC年,月和日来实例化本地Date对象。然后,这将使用提供的值创建本地日期。通过这样做,您可能会根据您希望它是UTC还是本地来创建不正确的日期。在您的情况下,如果您希望var now
为UTC,那么您当前实例化的方式与本地时间不同。
无论如何,JavaScript中的日期可能很棘手,所以我会考虑使用Moment.js来实现这个
这是一个很棒的库,提供了操作和转换您可能需要的JavaScript日期的所有功能。
例如,您可以执行以下操作:
var now = moment(); // current date and time in local format
var nowAsUTC = now.utc(); // current local date and time converted to UTC
var alsoNowAsUTC = moment.utc() // same as the line above, but staring in UTC
console.log(nowUTC.format("DD/MM/YYYY, hh:mm:ss"))// prints a pretty UTC string
答案 2 :(得分:0)
嗯..你确定要显示UTC-8吗?我猜你真的想把时间转换成美国太平洋时区。那不是总是 UTC-8。有时它是UTC-8,有时它是UTC-7。
如果您实际上并不在美国太平洋时区,那么在JavaScript中可靠地执行此操作的唯一方法是使用实现TZDB数据库的库。 I list several of them here
例如,使用walltime-js库,您可以执行以下操作:
var date = new Date();
var pacific = WallTime.UTCToWallTime(date, "America/Los_Angeles");
var s = pacific.toDateString() + ' ' + pacific.toFormattedTime();
// output: "Fri Apr 26 2013 5:44 PM"
您不能只添加或减去固定数字,因为目标时区可能会使用不同的偏移量,具体取决于您所谈论的具体日期。这主要是由于夏令时,也是因为时区随着时间的推移而发生变化。