React Native 日期处理:如何将指定日期的时间设置为凌晨或正午?
错误原因
你现有代码的逻辑本身就会保留当前时间:new Date() 初始化时会读取当前系统完整的时间参数(时、分、秒、毫秒、本地时区偏移),后续仅修改date(当月第几天)字段,自然不会覆盖时间部分。
解决方法
1. 生成本地时区的目标时间
直接基于你的日期字符串初始化Date对象,再调用setHours方法批量设置时间即可,setHours支持传入4个参数,依次对应时、分、秒、毫秒,一次性全部设置可以避免残留细碎时间字段:
- 本地时区午夜(0点)代码示例:
const myDate = "2021-09-13T00:00:00"; const midnightDate = new Date(myDate); midnightDate.setHours(0, 0, 0, 0);
- 本地时区正午(12点)代码示例:
const noonDate = new Date(myDate); noonDate.setHours(12, 0, 0, 0);
2. 生成UTC标准时间的目标时间
如果需要统一使用UTC时区的时间,调用setUTCHours方法即可:
- UTC午夜代码示例:
const utcMidnightDate = new Date(myDate); utcMidnightDate.setUTCHours(0, 0, 0, 0);
- UTC正午只需把
setUTCHours的第一个参数改为12即可。
注意事项
- 不带时区标识的日期字符串(比如你示例中的
"2021-09-13T00:00:00")会被new Date()默认解析为本地时区的时间,如果该字符串实际是UTC时间,建议末尾添加Z后缀,写成"2021-09-13T00:00:00Z"避免解析歧义。 - 如果需要输出指定格式的字符串,本地时区可以用
toLocaleString系列方法,UTC时间可以用toISOString方法。
内容的提问来源于stack exchange,提问作者Yujin Dong
相关产品推荐
相关产品推荐

