如何在javascript/Node.js中获取当前时间?

108

我想要得到1到24这个数字,其中1代表太平洋时间上午1点。

如何在Node.JS中获取这个数字?

我想知道现在太平洋时间是几点。

9个回答

150

你应该查看Date对象

具体来说,你可以查看Date对象的getHours()方法

getHours() 返回0-23的时间,所以要相应地处理。我认为0-23更直观,因为军事时间从0-23,但这取决于你自己。

考虑到这一点,代码应该是这样的:

var date = new Date();
var current_hour = date.getHours();

如果您的意思是将时间按分钟四舍五入(例如1:45 -> 2:00),您可以使用Date对象的getMinutes()方法。 - jtsao22
4
这是需要翻译的内容: Link to MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date. Don't link to that "W3C Schools" fake garbage。 - Max

150

这个函数会以以下格式返回日期和时间:YYYY:MM:DD:HH:MM:SS。它也可以在Node.js中使用。

function getDateTime() {

    var date = new Date();

    var hour = date.getHours();
    hour = (hour < 10 ? "0" : "") + hour;

    var min  = date.getMinutes();
    min = (min < 10 ? "0" : "") + min;

    var sec  = date.getSeconds();
    sec = (sec < 10 ? "0" : "") + sec;

    var year = date.getFullYear();

    var month = date.getMonth() + 1;
    month = (month < 10 ? "0" : "") + month;

    var day  = date.getDate();
    day = (day < 10 ? "0" : "") + day;

    return year + ":" + month + ":" + day + ":" + hour + ":" + min + ":" + sec;

}

12
哎呀。(new Date()).toJSON().slice(0, 19).replace(/[-T]/g, ':') - user3125367
3
不错!如果需要日期格式的灵活性,我的方法可能更好。 :-) - Ionică Bizău
1
@user3125367,您的建议虽然简洁,但实际上并不相同。我刚刚测试了一下,getDateTime()返回:2020:06:10:10:12:35, 而您的返回值是:2020:06:10:00:12:35。看起来它没有考虑时区调整。 - John Forbes

17

请查看moment.js库。它可以在浏览器和Node.JS中使用。让你能够编写

moment().hour();
或者
moment().hours();

没有事先编写任何函数。


13

前两个回答都是好的解决方案。如果您愿意使用库,我推荐moment.js - 它不仅可以获取/格式化日期,还可以完成更多功能。


8

有原生方法来处理日期

const date = new Date();
let hours = date.getHours();

6
这似乎是一个微不足道的改进,会影响可读性。 - Benjamin Lowry

7

如果您只需要时间字符串,可以使用这个表达式(带有一个简单的正则表达式):

new Date().toISOString().match(/(\d{2}:){2}\d{2}/)[0]
// "23:00:59"

0
var date = new Date();
var year = date.getFullYear();
var month = date.getMonth() + 1;
month = (month < 10 ? "0" : "") + month;
var hour = date.getHours();
hour = (hour < 10 ? "0" : "") + hour;
var day  = date.getDate();
day = (hour > 12 ? "" : "") + day - 1;
day = (day < 10 ? "0" : "") + day;
x = ":"
console.log( month + x + day + x + year )

它将以月、日、年的顺序显示日期


0

对于我的实例,我将其用作全局变量,然后调用它来检查营业时间的小时数。

以下是我的index.js中的代码:

global.globalDay = new Date().getDay(); 

global.globalHours = new Date().getHours();

从另一个文件中调用全局变量的值
    /*
     Days of the Week.
     Sunday = 0, Monday = 1, Tuesday = 2, Wensday = 3, Thursday = 4, Friday = 5, Saturday = 6

     Hours of the Day.
     0 = Midnight, 1 = 1am, 12 = Noon, 18 = 6pm, 23 = 11pm
     */

if (global.globalDay === 6 || global.globalDay === 0) {
     console.log('Its the weekend.');
} else if (global.globalDay > 0 && global.globalDay < 6 && global.globalHours > 8 && global.globalHours < 18) {
     console.log('During Business Hours!');
} else {
     console.log("Outside of Business hours!");
}

-1

要在PST时区启动您的节点,请在Ubuntu中使用以下命令。

TZ=\"/usr/share/zoneinfo/GMT+0\" && export TZ && npm start &

然后您可以参考日期库在Node中获取自定义计算日期和时间函数。

要在客户端使用它,请参考此链接,下载index.js和assertHelper.js并将其包含在您的HTML中。

<script src="assertHelper.js"></script>
<script type="text/javascript" src="index.js"></script>
$( document ).ready(function() {
    DateLibrary.getDayOfWeek(new Date("2015-06-15"),{operationType:"Day_of_Week"}); // Output : Monday
}

你可以使用示例中提供的不同函数来获取自定义日期。

如果一周的第一天是星期日,那么 2015 年 6 月 15 日是星期几。

 DateLibrary.getDayOfWeek(new Date("2015-06-15"),
    {operationType:"Day_Number_of_Week",
        startDayOfWeek:"Sunday"}) // Output : 1

如果一周的第一天是星期二,那么在2015年6月15日这个日期之后的第几周是多少?

 DateLibrary.getWeekNumber(new Date("2015-06-15"),
    {operationType:"Week_of_Year",
        startDayOfWeek:"Tuesday"}) // Output : 24

可以参考其他函数来满足您的自定义日期需求。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接