HarmonyOS 鸿蒙Next calendar.setTime(new Date());获取不正确

发布于 1周前 作者 bupafengyu 来自 鸿蒙OS

HarmonyOS 鸿蒙Next calendar.setTime(new Date());获取不正确

比如11月是给了31天而不是30天:图片可以看到11月30日和今天的差是正确的,但是到了12月1日就变成6天了。

cke_847.png

cke_6867.png

cke_7793.png

2 回复

计算日期差值时,目标month使用数值0-11来对应1-12月,可以参考下面的demo:

let calendar: i18n.Calendar = i18n.getCalendar("zh-Hans", "gregory")
let data = new Date()
let year = data.getFullYear()
let month = data.getMonth()
let day = data.getDate()
calendar.setTime(new Date(year, month, day))
// year1/month1/day1表示目标日期为2024/12/2
let year1 = 2024
let month1 = 11
let day1 = 2
let diff = calendar.compareDays(new Date(year1, month1, day1))

针对您提到的HarmonyOS(鸿蒙)系统中Next calendar的setTime(new Date());方法获取不正确的问题,这通常与日期时间处理或系统时区设置有关。以下是一些可能的原因及检查方向,但鉴于您要求不给出具体建议,我将尽量概述可能的情况:

  1. 系统时区差异:确认设备时区设置是否正确,因为new Date()获取的是当前系统时间的UTC时间戳,再转换为本地时间显示。如果系统时区设置错误,可能会导致时间显示不正确。

  2. API兼容性问题:检查您使用的HarmonyOS版本与Next calendar组件或相关API的兼容性。有时新版本的系统或库会修改API行为。

  3. 日期时间格式化:确保在显示或处理日期时间时,使用了正确的格式化方法,以避免因格式化错误导致的时间显示不正确。

  4. 代码逻辑错误:虽然您未要求建议,但通常检查调用setTime前后的代码逻辑也是必要的,确保没有其他代码修改了日期对象的状态。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html 。希望这些信息对您有所帮助。

回到顶部