Подтвердить что ты не робот

Javascript, время и дата: получение текущей минуты, часа, дня, недели, месяца, года данного миллисекундного времени

Я все еще обнимаю эту библиотеку, но у меня нет времени, поэтому я просто перейду к разделу спойлера и спрошу. При заданном, произвольном значении миллисекундного времени (вроде того, что вы дали от .getTime()), как мне получить текущую минуту, час, день, неделю месяца, месяца, недели года и года конкретная миллисекунда времени?

Кроме того, как мне получить количество дней в этом месяце? Что-нибудь, что я должен знать о високосных годах и других вещах?

4b9b3361

Ответ 1

Имена переменных должны быть описательными:

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 для создания объекта даты с использованием года и номера недели ISO?

Ответ 2

Относительно количества дней в месяце просто используйте команду статического коммутатора и проверьте 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"));

Ответ 3

Кроме того, как мне получить количество дней данного месяца?

Помимо того, что он сам вычисляет (и, следовательно, имеет право на получение високосного года), вы можете использовать расчет даты для этого:

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

В общем случае для расчетов timestamp/date я бы рекомендовал использовать методы Date, похожие на UTC, например getUTCSeconds вместо getSeconds() и Date.UTC, чтобы получить метку времени с датой UTC, а не new Date(y, m), поэтому вам не нужно беспокоиться о возможности странных временных разрывов, когда изменяются правила часовых поясов.

Ответ 4

Вот еще один способ получить дату

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)