Javascript,Time and Date: 获取给定毫秒时间的当前分钟、小时、日、周、月、年

我还在思考这个图书馆的事情,但是我没时间了,所以我就直接跳到剧透部分,然后问问。对于一个给定的、任意的毫秒时间值(就像你从 .getTime()给出的那样) ,我如何得到当前的分钟、小时、天、月的周、月、年的周和那个特定毫秒时间的年?

此外,如何检索给定月份的天数?关于闰年和其他事情,有什么我应该知道的吗?

240703 次浏览

变量名应该是描述性的:

var date = new Date;
date.setTime(result_from_Date_getTime);


var seconds = date.getSeconds();
var minutes = date.getMinutes();
var hour = date.getHours();


var year = date.getFullYear();
var month = date.getMonth(); // beware: January = 0; February = 1, etc.
var day = date.getDate();


var dayOfWeek = date.getDay(); // Sunday = 0, Monday = 1, etc.
var milliSeconds = date.getMilliseconds();

给定月份的天数不变。在闰年,二月有29天。灵感来自 http://www.javascriptkata.com/2007/05/24/how-to-know-if-its-a-leap-year/(感谢 Peter Bailey!)

继续前面的代码:

var days_in_months = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
// for leap years, February has 29 days. Check whether
// February, the 29th exists for the given year
if( (new Date(year, 1, 29)).getDate() == 29 ) days_in_month[1] = 29;

没有直接的方法可以得到一年中的某一周。关于这个问题的答案,请参阅 在 javascript 中有没有使用 year & ISO 周号创建日期对象的方法?

关于一个月的天数,只要使用静态开关命令,并检查 if (year % 4 == 0),在这种情况下,二月将有29天。

分、小时、日等:

var someMillisecondValue = 511111222127;
var date = new Date(someMillisecondValue);
var minute = date.getMinutes();
var hour = date.getHours();
var day = date.getDate();
var month = date.getMonth();
var year = date.getFullYear();
alert([minute, hour, day, month, year].join("\n"));

此外,如何检索给定月份的天数?

除了自己计算(因此必须正确计算闰年)之外,还可以使用 Date 计算:

var y= 2010, m= 11;            // December 2010 - trap: months are 0-based in JS


var next= Date.UTC(y, m+1);    // timestamp of beginning of following month
var end= new Date(next-1);     // date for last second of this month
var lastday= end.getUTCDate(); // 31

一般来说,对于时间戳/日期计算,我建议使用基于 UTC 的 Date 方法,比如 getUTCSeconds而不是 getSeconds(),以及 Date.UTC,从 UTC 日期获得时间戳,而不是 new Date(y, m),因此您不必担心时区规则改变时可能出现奇怪的时间不连续性。

下面是获取日期的另一种方法

new Date().getDate()          // Get the day as a number (1-31)
new Date().getDay()           // Get the weekday as a number (0-6)
new Date().getFullYear()      // Get the four digit year (yyyy)
new Date().getHours()         // Get the hour (0-23)
new Date().getMilliseconds()  // Get the milliseconds (0-999)
new Date().getMinutes()       // Get the minutes (0-59)
new Date().getMonth()         // Get the month (0-11)
new Date().getSeconds()       // Get the seconds (0-59)
new Date().getTime()          // Get the time (milliseconds since January 1, 1970)