javascript - 根据地区返回不同的日期
问题描述
我在 Javascript 中有一个函数,它返回当前/上一个/下一个季度的日期范围。例如,对于当前季度,它将返回2019-01-01
and 2019-03-31
。出于某种原因,一些同事说日期范围对他们来说是不准确的:对他们来说,它返回2018-12-31
并且2019-02-27
. 我注意到这两个用户都在德国/波兰地区。
这是我的jsFiddle
function formatDate(date) {
var d = new Date(date),
month = '' + (d.getUTCMonth() + 1),
day = '' + d.getUTCDate(),
year = d.getUTCFullYear();
if (month.length < 2) month = '0' + month;
if (day.length < 2) day = '0' + day;
return [year, month, day].join('-');
}
function getDate_FQ(range){
var now = new Date();
switch(range){
case 'Previous FQ':
now.setMonth(now.getMonth()-3);
break;
case 'Next FQ':
now.setMonth(now.getMonth()+3);
break;
case 'Current FQ':
break;
}
var quarter = Math.floor((now.getUTCMonth() / 3));
var firstDate = new Date(now.getUTCFullYear(), quarter * 3, 1);
var endDate = new Date(firstDate.getUTCFullYear(), firstDate.getUTCMonth() + 3, 0);
return([firstDate, endDate])
}
let [first, end] = getDate_FQ('Current FQ')
console.log(formatDate(first), formatDate(end))
一个约会差了1天,另一个约会差了1个月零1天怎么办?
解决方案
如果您想Date
在每个时区引用相同的时间,UTC
请在两行中工作并将代码更改为:
var firstDate = new Date(Date.UTC(now.getUTCFullYear(), quarter * 3, 1));
var endDate = new Date(Date.UTC(firstDate.getUTCFullYear(), firstDate.getUTCMonth() + 3, 0));
推荐阅读
- scala - Scala - Play Framework - Reactive Mongo - 服务层
- c++ - 如何将 Q_GLOBAL_STATIC 与插件一起使用?
- go - go 例程运行时如何将值分配给结构?
- vb6 - 随机 Vb6 错误,通常用于 'load control(array)' 语句
- laravel - 为什么 Laravel 组合查询不起作用?
- google-app-engine - 使用来自另一个源 API 的 Google 访问令牌
- ios - 如何使用不同的构建配置本地化应用程序名称?
- javascript - react-table 'pivotBy' - 如果有多个聚合项目,我如何显示数据透视?
- gradle - 评估项目 ':app' 时出现问题。> 路径不能为 null 或空字符串。路径='空'
- sql-server - sql server 2008R2完整版禁用安装SQL server agent