Получить номер дня с момента объекта JavaScript - PullRequest
0 голосов
/ 10 сентября 2018

У меня есть объект данных момента, что я хочу сделать, это получить номер даты, например, если дано 2018-12-31, он должен вернуть 365.

То, что я сейчас сделал, так это, но я чувствую, что это более грубый подход, так как мне приходится запускать эту функцию снова и снова. Есть ли более элегантный способ сделать это с помощью библиотеки momentjs?

var day = 25;
var mon = 12;
var year = 2018;
var sum = 0;
var days = 0;
var month_day = [31,28,31,30,31,30,31,31,30,31,30,31];
for ( var i = 0; i < mon; i++){
    sum += month_day[i];
}

days = sum - (month_day[mon-1] - day);
console.log(days)

Ответы [ 3 ]

0 голосов
/ 10 сентября 2018

Вы можете использовать функцию dayOfYear():

const day = 25;
const month = 12 - 1; // months are 0-based when using the object constructor
const year = 2018;
const date = moment({day, month, year});

console.log(date.dayOfYear()); // 359
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
0 голосов
/ 10 сентября 2018

Вы можете сделать это без моментов

let year = 2018;
let month = 12 - 1;
let day = 25;
let dayOfYear = (Date.UTC(year, month, day) - Date.UTC(year, 0, 1)) / 86400000 + 1;
console.log(dayOfYear);
0 голосов
/ 10 сентября 2018

Документация moment полезна: https://momentjs.com/docs/#/get-set/day-of-year/

var day = 25;
var mon = 12;
var year = 2018;
console.log(moment().year(year).month(mon).date(day).dayOfYear());
...