使用Moment.js获取当前年份的第一天

44

我有两个输入字段用于在日期之间搜索。我希望开始日期默认为当前年份的第一天,而结束日期默认为今天。我已经设置了结束日期,但不确定如何将其显示为开始日期。

var defaultStart =
var defaultEnd = moment((new Date()).valueOf());
$('#searchStart').val(defaultStart.format('DD/MM/YYYY'));
$('#searchEnd').val(defaultEnd.format('DD/MM/YYYY'));
4个回答

169

您可以这样做:

moment().startOf('year');

通过像这样的方式进行格式化

moment().startOf('year').format('MM/DD/YYYY');

4
这是一个非常好的答案!然而,它实际上不能正常工作,因为需要更新为moment().startOf('year'),而不是moment.startOf('year')。 - Josh Buchea
2
请注意,startOf 会改变原始值。如果不需要这样做,请使用 .clone().startOf('year'); - Steve S
以上方法返回当前年份的开始...有没有一种方法可以获取传递的年份的开始?比如我可以传递2017作为参数并获得2017年的开始... - Pallavi Hegde
1
你可以尝试这样做:moment().startOf('year').add(-1,'years').format('MM/DD/YYYY'); - m007

15

要获取任何给定年份的起始日期和结束日期,您可以将该年份作为参数传递给moment。

startDateOfTheYear = moment([year]);
endDateOfTheYear = moment([year]).endOf('year');

1
让 fromDate 等于 moment().startOf('year').toDate(); toDate 等于 moment().endOf('year').toDate(); 如果你正在使用带有日期类型的 TypeScript。 - Santosh

8
var defaultStart = '01/01/'+new Date().getFullYear()

如果您不想使用Moment.js,我认为这个答案是最好的。 - Jason Swett

-7
var thisYear = (new Date()).getFullYear();    
var start = new Date("1/1/" + thisYear);
var defaultStart = moment(start.valueOf());

5
这个答案比这个答案更好吗?如果是,为什么? - Jason Swett
1
使用moment的以下注释更有效率: "moment().startOf('year');" - Christopher Grigg
@JasonSwett 可能只是因为这个问题在2014年就已经有答案了,而使用moment更有效的答案则是两年后发布的。是的,我知道你一年前就问过这个问题 :) - Diana Ionita

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