当前位置:   article > 正文

【HarmonyOS NEXT】列表渲染异常,Intl接口报错_列表渲染异常,intl接口报错

列表渲染异常,intl接口报错

【关键字】

列表渲染 / Intl接口 / 国际化

【问题描述】

音频播放应用在4.1.3.5 版本x5设备和204.1.0.33版本NOH-AN00设备上,列表渲染异常,hilog日志报错信息显示Intl接口发生错误。

具体hilog日志信息如下:

  1. 12-28 20:27:53.547 26915-26915 A03D00/JSAPP com.yt.radioHarmony E Error message:Invalid option : option
  2. 12-28 20:27:53.547 26915-26915 A03D00/JSAPP com.yt.radioHarmony E SourceCode:
  3. 12-28 20:27:53.547 26915-26915 A03D00/JSAPP com.yt.radioHarmony E let formatSdf = new Intl.DateTimeFormat("zh-CN", {
  4. 12-28 20:27:53.547 26915-26915 A03D00/JSAPP com.yt.radioHarmony E ^
  5. 12-28 20:27:53.547 26915-26915 A03D00/JSAPP com.yt.radioHarmony E Stacktrace:
  6. 12-28 20:27:53.547 26915-26915 A03D00/JSAPP com.yt.radioHarmony E at publishTimeToNowDistance (entry/src/main/ets/utils/utils.ts:260:21)
  7. 12-28 20:27:53.547 26915-26915 A03D00/JSAPP com.yt.radioHarmony E at anonymous (entry/src/main/ets/module/album/AlbumDetailsListComponent.ets:306:16)12-28 20:27:53.547 26915-26915 A03D00/JSAPP com.yt.radioHarmony E at initialRender (entry/src/main/ets/module/album/AlbumDetailsListComponent.ets:305:16)
复制

其中utils.ts文件的publishTimeToNowDistance相关代码如下:

  1. /**
  2. * 发布时间格式化
  3. * */
  4. export function publishTimeToNowDistance(publishTime: number): string {
  5. if (publishTime <= 0) {
  6. return "";
  7. }
  8. let formatSdf = new Intl.DateTimeFormat("zh-CN", {
  9. hour12: false,
  10. month: '2-digit',
  11. day: '2-digit',
  12. minute: 'numeric',
  13. second: 'numeric',
  14. dateStyle:'short'
  15. })
  16. let formatSdfYear = new Intl.DateTimeFormat("zh-CN", {
  17. hour12: false,
  18. year: 'numeric',
  19. month: '2-digit',
  20. day: '2-digit',
  21. minute: 'numeric',
  22. second: 'numeric',
  23. dateStyle:'short'
  24. })
  25. let nowTimeML = Date.now()
  26. let distance = nowTimeML - publishTime
  27. if (distance < 10 * 60 * 1000) {
  28. return '刚刚'
  29. } else if (distance < 60 * 60 * 1000) {
  30. return `${Math.floor(distance / (60 * 1000))}分钟前`
  31. } else if (distance < 24 * 60 * 60 * 1000) {
  32. return `${Math.floor(distance / (60 * 60 * 1000))}小时前`
  33. } else if (distance < 48 * 60 * 60 * 1000) {
  34. return '1天前'
  35. } else {
  36. let publishCalendar = new Date(publishTime)
  37. let yearPublish = publishCalendar.getFullYear()
  38. let nowCalendar = new Date()
  39. let yearNow = nowCalendar.getFullYear()
  40. if (yearPublish === yearNow) {
  41. return formatSdf.format(publishTime).replace(/\//g ,'-')
  42. } else {
  43. return formatSdfYear.format(publishTime).replace(/\//g ,'-')
  44. }
  45. }
  46. }
复制

【解决方案】

使用@ohos.intl (国际化-Intl)接口,代码的引用头文件需要import Intl from '@ohos.intl'。

代码也需要修改一下,请参考这个文档修改。

文档地址:文档中心

其中:dateStyle这个参数会和年月日时分秒的单独设置冲突,建议去掉。

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号