最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

momentjs - Get the day number from moment object javascript - Stack Overflow

programmeradmin0浏览0评论

I have a moment data object, what i want to do is get the date number, like if 2018-12-31 is given, it should return 365.

What I've currently done is this, but I feel like this is a more brute force approach since I have to run this function over and over again. Is there a more elegant way of doing this through the momentjs library?

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)

I have a moment data object, what i want to do is get the date number, like if 2018-12-31 is given, it should return 365.

What I've currently done is this, but I feel like this is a more brute force approach since I have to run this function over and over again. Is there a more elegant way of doing this through the momentjs library?

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)
Share Improve this question edited Sep 10, 2018 at 9:45 Sumurai8 20.7k11 gold badges68 silver badges102 bronze badges asked Sep 10, 2018 at 3:50 Nimesha KalingaNimesha Kalinga 2614 silver badges17 bronze badges 2
  • I know this is asked for php, but i want to know is, whether is there a elegant way of doing this using moment – Nimesha Kalinga Commented Sep 10, 2018 at 3:51
  • 3 Not only brute force, but also incorrect because it ignores leap years. – Robby Cornelissen Commented Sep 10, 2018 at 3:52
Add a comment  | 

3 Answers 3

Reset to default 15

You can use the dayOfYear() function:

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>

You can do it without momentjs

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);

The moment documentation is helpful: 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());
发布评论

评论列表(0)

  1. 暂无评论