获取正确的当地时间

时间:2015-04-19 07:21:19

标签: javascript

我需要得到当地时间。我创建了这个脚本,但是,例如,在意大利(我住的地方),警报显示7而不是9.为什么?

var time = new Date().getTime();
var seconds = time / 1000;

seconds = seconds % 86400;

hours = parseInt(seconds / 3600);

alert(hours);

5 个答案:

答案 0 :(得分:6)

因为getTime以毫秒为单位返回时间戳。时间戳与时区无关。使用getTimezoneOffset()获取与UTC相关的偏移量,并添加它。

答案 1 :(得分:2)

new Date().getHours()将为您提供当地时间,无需调整。

如果您需要抵消绝对时间,

new Date().getTimezoneOffset()将为您提供用户区域设置中UTC的分钟数。

请注意,UNIX时间戳测量自UNIX纪元以来的秒数,就像每天正好是3600 * 24秒一样。这允许你在大多数日子里得到分区和模数的时间,但是如果你的时间戳早于最新的leap second,并且你尝试用它做一些简单的数学运算,那么结果将不准确。

答案 2 :(得分:0)

DEMO:http://jsfiddle.net/yk3wkcr8/

var currentTime = new Date();

var h = currentTime.getHours();
var m = currentTime.getMinutes();
var s = currentTime.getSeconds();

alert(h);
alert(m);
alert(s);

答案 3 :(得分:0)

如果您想要一个示例,请尝试以下操作:Fiddle

它使用完整数组,包括秒,分钟,小时,日期,日期和年份。

BTW你可以使用getHours();其次是其他人。

var d = new Date(),
    hours = d.getHours(),
    hour = (hours - 12),
    year = d.getFullYear(),
    second = d.getSeconds(),
    minute = d.getMinutes();
alert (hour + ":" + minute + ":" + second);

等等。

答案 4 :(得分:-1)

你可以试试这个:

new Date().toLocaleString()

它会给你类似的东西:

"4/16/2015, 9:14:53 AM"

如果您只需要获取时间戳,那么您可以将结果字符串拆分为数组并从数组中获取第二项:

new Date().toLocaleString().split(',')[1]

如果你只需要几小时就可以了:

 new Date().getHours()