ArkTS对时间的处理,如何获取系统当前时间或者指定时间,已经对时间格式进行转换。

ArkTS对时间的处理

HarmonyOS
2024-05-23 21:56:37
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
chunter

本文主要介绍如何获取系统当前时间或者指定时间,已经对时间格式进行转换。本文档参考@ohos.systemDateTime (系统时间、时区)-ArkTS API参考-HarmonyOS应用开发。主要使用@ohos.systemDateTime 对时间进行处理,以及使用第三方库对时间格式进行转换

使用 @ohos.systemDateTime

导入模块

import systemDateTime from '@ohos.systemDateTime';

使用getCurrentTime(isNano: boolean, callback: AsyncCallback<number>): void

获取自Unix纪元以来经过的时间,使用callback异步回调。

系统能力:SystemCapability.MiscServices.Time

参数:



参数名




类型




必填




说明


isNano

boolean

返回结果是否为纳秒数。- true:表示返回结果为纳秒数(ns)。- false:表示返回结果为毫秒数(ms)。

callback

AsyncCallback<number>

回调函数,返回自Unix纪元以来经过的时间戳。

try { 
 systemDateTime.getCurrentTime(true, (error: BusinessError, time: number) => { 
   if (error) { 
     console.info(`Failed to get currentTime. message: ${error.message}, code: ${error.code}`); 
     return; 
  } 
   console.info(`Succeeded in getting currentTime : ${time}`); 
}); 
} catch(e) { 
 let error = e as BusinessError; 
 console.info(`Failed to get currentTime. message: ${error.message}, code: ${error.code}`); 
}

其他的获取时间能力请参考API文档,下面是目前支持的API

使用Date

systemDateTime.getDate从API9支持,从API10开始废弃,使用new Date()代替

使用方式如下所示

let date: Date = new Date();

常用API

console.info(`date.toString() res : ` + date.toString()); 
console.info(`date.toDateString() res: ` + date.toDateString()); 
console.info(`date.toTimeString() res: ` + date.toTimeString()); 
console.info(`date.toLocaleString() res: ` + date.toLocaleString()); 
console.info(`date.toLocaleDateString() res: ` + date.toLocaleDateString()); 
console.info(`date.getFullYear() res: ` + date.getFullYear()); 
console.info(`date.getUTCFullYear() res: ` + date.getUTCFullYear()); 
console.info(`date.getMonth() res: ` + date.getMonth()); 
console.info(`date.getUTCDay() res: ` + date.getUTCDay()); 
console.info(`date.getDay() res: ` + date.getDay());

输出结果如下所示

date.toDateString() res: Wed Nov 15 2023 
date.toTimeString() res: 17:40:43 GMT+0800 
date.toLocaleString() res: 11/15/2023, 5:40:43 PM 
date.toLocaleDateString() res: 11/15/2023 
date.getFullYear() res: 2023 
date.getUTCFullYear() res: 2023 
date.getMonth() res: 10 
date.getUTCDay() res: 3 
date.getDay() res: 3

更多支持的API,参考lib.ets.5.ts

使用第三方库

如果上面的API无法满足要求,可以使用第三方库,本文主要使用dayjs,其他的第三方库可以自行根据官方文档使用,dayjs链接OpenHarmony-TPC/openharmony_tpc_samples - Gitee.com

下载

oh-package.json5配置文件中添加dayjs的依赖

"dayjs": "1.11.7"

添加依赖的格式如下所示

"dependencies": { 
​ 
 "@ohos/fooLib": "file:xxx/fooLib", // 本地引用 
​ 
 "remoteLib1": "1.0.0" // 远程引用,固定版本 
​ 
 "remoteLib2": "~3.2.1" // 远程引用,保持主版本和次版本不变,patch 版本可更新到最新版本。即 >=3.2.1, <3.3.0 
​ 
 "remoteLib3": "^3.1.0" // 远程引用,保持主版本不变,次版本、patch 版本可更新到最新版本。即 >=3.1.0, <4.0.0 
​ 
}

使用

import dayjs from "dayjs"; 
​ 
dayjs("2018-08-08"); // 解析 
​ 
dayjs().format("{YYYY} MM-DDTHH:mm:ss SSS [Z] A"); // 展示 
dayjs(date).format("YYYY-MM-DD HH:mm:ss") // 展示 
​ 
dayjs().set("month", 3).month(); // 获取 
​ 
dayjs().add(1, "year"); // 处理 
​ 
dayjs().isBefore(dayjs()); // 查询

使用插件

import weekOfYear from "dayjs/plugin/weekOfYear"; //导入该插件 
  
  
console.info(`DayOfWeek is: ` + dayjs(date).format("d")); 
console.info(`DayOfMonth is: ` + dayjs(date).format("DD")); 
  
dayjs.extend(weekOfYear) //使用该插件 
console.info(`WeekOfYear is: ` + dayjs(date).week());

更多关于dayjs的使用请参考Day.js中文网 (fenxianglu.cn)

更多支持的第三方库请参考README.md · OpenHarmony-TPC/openharmony_tpc_samples - Gitee.com

适配的版本信息

IDE:DevEco Studio 4.0.1.601

SDK:HarmoneyOS 4.0.10.11

分享
微博
QQ
微信
回复
2024-05-24 21:41:14
相关问题
如何获取系统时间戳以及格式转换
482浏览 • 1回复 待解决
如何时间转换为日期格式时间
993浏览 • 1回复 待解决
LiteOS-M如何获取系统当前时间
6121浏览 • 1回复 待解决
ArkTS时间获取如何实现
3026浏览 • 1回复 已解决
鸿蒙 通知如何设置已经显示时间
5080浏览 • 1回复 待解决
如何获取组件刷新时间
589浏览 • 1回复 待解决
如何从C++层面获取系统时间
2724浏览 • 2回复 待解决
如何获取系统时间戳,你知道吗?
1197浏览 • 1回复 待解决
eTS中如何进行时间与字符串转换
2560浏览 • 1回复 待解决
new Date()获取月和日时间错误。
459浏览 • 1回复 待解决
purchaseToken过期时间是多久?
499浏览 • 1回复 待解决
会话结束时间怎样记录?
1724浏览 • 1回复 待解决
需要提供曝光时间设置接口
401浏览 • 1回复 待解决
卡片数据刷新时间如何支持配置
587浏览 • 1回复 待解决
Stage模型的卡片如何配置刷新时间
986浏览 • 1回复 待解决
TimePicker如何设置时间选择器范围?
5464浏览 • 1回复 待解决