我试图创建一个报告,需要通过Javascript获得上季度和本季度的日期。代码上个月工作,但在三月它不工作。它显示上季度作为本季度和本季度显示为下季度。我在这个项目中使用datejs。以下是我使用的代码:
function thisQuarterDates(from, to) {
var month = Date.parse('today').toString('MM');
var quarterMonth = (Math.floor(month/3)*3)+1;
var year = Date.parse('today').toString('yyyy');
var quarterStartDate = (quarterMonth < 10) ? quarterMonth+'/1/' +year : quarterMonth+'/1/'+ year;
var quarterEndDate = Date.parse(quarterStartDate).add(2).months().moveToLastDayOfMonth().toString('M/d/yyyy');
var today = Date.parse('today').toString('M/d/yyyy');
document.getElementById(from).value = quarterStartDate;
document.getElementById(to).value = quarterEndDate;
}
function lastQuarterDates(from, to) {
var month = Date.parse('today').toString('MM');
var quarter = (Math.floor(month/3))+1;
var lastQuarter = (quarter > 1) ? quarter - 1 : lastQuarter = 4;
var year;
if (((((lastQuarter-1)*3)+1) < 10))
{
year = Date.parse('today').toString('yyyy');
}
else
{
year = Date.parse('today').add(-1).years().toString('yyyy');
}
var firstDate = ((((lastQuarter-1)*3)+1) < 10) ? (((lastQuarter-1)*3)+1) +'/1/'+ year : (((lastQuarter-1)*3)+1) +'/1/'+ year;
var lastDate = Date.parse(firstDate).add(2).months().moveToLastDayOfMonth().toString('M/d/yyyy');
document.getElementById(from).value = firstDate;
document.getElementById(to).value = lastDate;
}
有人知道为什么它是不正确的吗?或者有更简单的方法吗?
8条答案
按热度按时间jc3wubiy1#
纯JS中的简单通用解决方案。
首先计算季度号:
下一个,当前季度:
上一季度
在表达式
new Date(today.getFullYear(), quarter * 3 - x, 1)
中每季度加上或减去3's
,以获得未来或过去的季度。anhgbhbe2#
如果你使用的是moment.js,这可能会更容易:
转换到date.js应该相当容易。
carvr3hs3#
使用 * a moment.js库**可以非常简单地获取特定季度的开始和结束日期,如下所示:
sg3maiej4#
在第一次功能变更时
与
而在第二函数上
与
我觉得会没事的。
对于第二个函数我不认为
一个简单的
我也会做同样的工作
j9per5c45#
使用moment.js:
moment().endOf('quarter')
moment().subtract(1, 'quarter').startOf('quarter')
moment().subtract(1, 'quarter').endOf('quarter')
moment().add(1, 'quarter').startOf('quarter')
moment().add(1, 'quarter').endOf('quarter')
aoyhnmkz6#
我使用date-fns库已经有一段时间了,它提供的方法在解决此类问题时非常有用。
您可以使用
addQuarter
和subQuarter
方法。代码如下所示:
参考:https://date-fns.org/v2.21.2/docs/addQuarters
tnkciper7#
使用这个简单的代码得到基于一月和四月的所有季度
Demo
Fiddle
ejk8hzay8#
使用此功能,我们可以动态获得季度的开始和结束日期,而不考虑财政年度(季度)的开始。