javascript - 上周使用 javascript 的开始日期和结束日期没有给出所需的结果
问题描述
我正在使用以下代码,但它正在返回上周的
开始日期 = 0-4/09/2018和
结束日期 = 02/09/2018
var curr = new Date;
var first = curr.getDate() - curr.getDay();
var last = first + 6;
var startDate = new Date(curr.setDate(first));
var dd1 = startDate.getDate()-6;
var mm1 = startDate.getMonth() + 1;
if(dd1<10){
dd1='0'+dd1
}
if(mm1<10){
mm1='0'+mm1
}
startDate = "" + dd1 + "/" + mm1 + "/" + startDate.getFullYear();
var endDate = new Date(curr.setDate(last));
var dd2 = endDate.getDate()-6;
var mm2 = endDate.getMonth() + 1;
if(dd2<10){
dd2='0'+dd2
}
if(mm2<10){
mm2='0'+mm2
}
endDate = "" + dd2 + "/" + mm2 + "/" + endDate.getFullYear();
解决方案
在获取值之前,您必须使用 Date 对象并将其日期设置为您喜欢的值。您的实施无效,因为:
- 缺少类型转换
- 您不能执行 Date().getDate()-6,如果日期为 1,您将计算负值,因此对日期没有意义。
正确的形式是:
var curr,startDate,endDate, strStartDate,strEndDate;
curr = new Date();
curr.setDate(curr.getDate()+6)
startDate = new Date(curr.getTime());
startDate.setDate(startDate.getDate()-6)
strStartDate = startDate.getDate()+"/"+(startDate.getMonth()+1)+"/"+startDate.getFullYear();
endDate = new Date(startDate.getTime());
endDate.setDate(endDate.getDate()-6);
strEndDate = endDate.getDate()+"/"+(endDate.getMonth()+1)+"/"+endDate.getFullYear();
推荐阅读
- mysql - 如何使用 SQL 查询将多列数据放入同一个单元格?
- postgresql - 代码点火器向自定义查询添加“排序依据”
- jackson - 被 Karaf FeatureService.installFeatures() 覆盖的捆绑包
- r - 更改R中过滤的data.frame中一列中的所有值
- azure - 监视 Azure 事件中心分区队列大小的可用方法
- casting - 如何修复 SQL 错误 [306] [S0002]:text、ntext 和 image 数据类型无法比较或排序,除非使用 IS NULL 或 LIKE 运算符?
- c# - 按索引返回数字的方法
- firebase - 为具有异常字段的动态和静态节点创建 Firebase 规则
- appium - Appium / Python的云测试服务?
- matlab - Matlab:标准化后直方图下降?