javascript - 如何将此日期从 momentjs 转换为纯 JavaScript
问题描述
我有一个时间戳,我试图将其舍入到最近的 UTC 星期一 00:00:00:00:000Z
我的代码瞬间看起来像这样
let now = Date.now()
moment.unix(now / 1000).utc().startOf("isoWeek").valueOf()
我正在尝试在普通的 JS 中立即执行此操作,但我没有得到相同的答案
const nearestMonday = date => {
const monday = 1;
const currentDay = date.getDay();
const distance = (monday + 7 - currentDay) % 7;
const newDate = new Date(date.getTime());
newDate.setDate(date.getDate() + distance);
newDate.setHours(0, 0, 0, 0);
return newDate;
}
> d = Date.now()
1545989455067
> nearestMonday(new Date(d)).getTime()
1546194600000
> m.unix(Date.now() / 1000).utc().startOf("isoWeek").valueOf()
1545609600000
我在格林威治标准时间 + 530 区,我要改变什么才能得到与时刻相同的答案
解决方案
我认为这可能会做你想要的:
const nearestMonday = date => {
const day = 1000*60*60*24;
const week = day*7;
return new Date(Math.floor(date.getTime()/week)*week-3*day);
}
推荐阅读
- ios - 如何确认 App Store 将尊重我的最低 iOS 版本?
- excel - 使用 Excel VBA 从其他工作表更新成本中心
- realm - 如何查询 Realm DB Browser?
- reactjs - React - 通过存在对象属性覆盖状态
- azure-devops - 从 az ml cli 运行 id
- java - 部署为war时是否需要spring boot应用程序的“main”方法
- html - 视频无法在 chrome 中播放或自动播放,甚至静音 - 有时是,有时不是
- syntax - 匹配借来的枚举 - 为什么这种语法等效?
- sql-server - 如何使用 Visual Studio 2019 调试 CLR 数据库对象(存储过程)
- spring-integration - 如何从上传文件到 sftp 获得响应?