ArkTS语言(四)

学习ArkTS语言

ArkTS是HarmonyOS的主要应用开发语言,在TypeScript基础上进行了扩展,保留了其基本风格,并通过增强静态检查和分析来提高程序的稳定性和性能。本教程将帮助开发者掌握ArkTS的核心功能、语法及最佳实践,以便高效地构建高性能移动应用。

1.Record 记录

Record 是TypeScript 提供的一个内置泛型类型,用于表示一组键值对数据,其键与值的类型可以自定义。

1.1 创建


//1. 创建Record类型的数据
let record: Record<string, Object> = {
  "name": "zhangsan",
  "age": 20,
  "birthday":"2002-10-10"
} 

1.2 操作


//1. 创建Record类型的数据
let record: Record<string, Object> = {
  "name": "zhangsan",
  "age": 20,
  "birthday":"2002-10-10"
} 

//2. 修改属性的值
record.name = "张三"
record["age"] = 30
//3. 添加属性名与属性值
record.gender = "男"

//4. 获取属性名对应的值
console.log(record.name as string)
console.log(record[age] as number)
console.log(record.birthday as string)

//5. 判断是否包含某个属性
console.log("是否包含name属性:" + Reflect.has(record, "name")); 

1.3 遍历

方式一:先获取所有的键,再通过键获取值


let keys: string[] = Object.keys(record)
for (let key of keys) {
  console.log(key + "=" + record[key])
}

方式二:先获取每一组键值对,再获取每组键值对的键和值


let entry: [string, Object][] = Object.entries(record)
entry.forEach((entry:[string,Object])=>{
  console.log(entry[0]+"="+entry[1])
})

1.4 转换

Record 本质上其实就是一种对象结构,所以Record和普通对象、JSON是可以相互转换的。

Record与对象互转


//定义Record类型的数据
let record: Record<string, Object> = {
  "name": "zhangsan",
  "age": 20,
  "birthday":"2002-10-10"
} 

//将Record转化为指定类的对象
let student = record as object as Student
console.log(JSON.stringify(student))

let record2 = student as object as Record<string, Object>;
console.log(JSON.stringify(record2))

Record 与 JSON 转换
JSON对象和Record都符合对象结构,所以它们可以相互转换。


//定义Record类型的数据
let record: Record<string, Object> = {
  "name": "zhangsan",
  "age": 20,
  "birthday":"2002-10-10"
} 

//将Record转化为JSON
let json = JSON.stringify(record)
console.log(json) //{"name":"张三","age":30,"birthday":"2012-12-22"}

//先将JSON字符串解析为JSON对象,再将JSON对象转换为Record
let student2 = JSON.parse(json) as Record<string, Object>
console.log(JSON.stringfy(student2)) //{"name":"张三","age":30,"birthday":"2012-12-22"}

2.Date 日期

TypeScript 中的 Date 类提供了广泛的日期和时间处理方法,使得对时间的操作变得简单且灵活。掌握这些方法将帮助开发者进行高效的时间计算、格式化以及日期操作。

2.1 Date.now()

功能:
Date.now() 返回当前时间的时间戳(以毫秒为单位)。
示例:


console.log(Date.now());  // 返回当前时间的时间戳(毫秒)

解释:
● Date.now() 返回自 1970 年 1 月 1 日以来的毫秒数。
● 它常用于获取当前时间戳,用于性能测试或计算时间间隔。

2.2 getFullYear()

功能:
Date.prototype.getFullYear() 返回完整的年份(四位数)。
示例:


const date = new Date();
console.log(date.getFullYear());  // 当前年份

解释:
● getFullYear() 返回当前日期对象的四位年份。
● 它常用于获取当前年份,例如在生成时间戳时使用。

2.3 getMonth()

功能:
Date.prototype.getMonth() 返回当前月份(0 到 11)。
示例:


const date = new Date();
console.log(date.getMonth());  // 返回当前月份(0 为一月,11 为十二月)

解释:
● getMonth() 返回当前日期对象的月份,范围是从 0 到 11。
● 使用时需要注意,0 表示 1 月,11 表示 12 月。

2.4 getDate()

功能:
Date.prototype.getDay() 返回当前日期对象的星期几(0 到 6)。
示例:


const date = new Date();
console.log(date.getDay());  // 0 为星期天,6 为星期六

解释:
● getDay() 返回当前日期对象的星期几,0 表示星期天,6 表示星期六。
● 它用于获取当前星期几。

2.5 getDay()

功能:
Date.prototype.getDate() 返回当前日期对象中的日期(1 到 31)。
示例:


const date = new Date();
console.log(date.getDay());  // 0 为星期天,6 为星期六

解释:
● getDay() 返回当前日期对象的星期几,0 表示星期天,6 表示星期六。
● 它用于获取当前星期几。

2.6 getHours()

功能:
Date.prototype.getHours() 返回当前日期对象的小时(0 到 23)。
示例:


const date = new Date();
console.log(date.getHours());  // 返回当前小时(0-23)

解释:
● getHours() 返回当前日期对象的小时,范围是从 0 到 23。
● 它表示一天中的小时数。

2.7 getMinutes()

功能:
Date.prototype.getMinutes() 返回当前日期对象的分钟(0 到 59)。
示例:


const date = new Date();
console.log(date.getMinutes());  // 返回当前分钟(0-59)

解释:

getMinutes() 返回当前日期对象的分钟数,范围是从 0 到 59。它表示当前小时内的分钟数。

2.8 getSeconds()

功能:
Date.prototype.getSeconds() 返回当前日期对象的秒数(0 到 59)。
示例:


const date = new Date();
console.log(date.getSeconds());  // 返回当前秒数(0-59)

解释:
● getSeconds() 返回当前日期对象的秒数,范围是从 0 到 59。
● 它表示当前分钟内的秒数。

2.9 getMilliseconds()

功能:
Date.prototype.getMilliseconds() 返回当前日期对象的毫秒数(0 到 999)。
示例:


const date = new Date();
console.log(date.getMilliseconds());  // 返回当前毫秒数(0-999)

解释:
● getMilliseconds() 返回当前日期对象的毫秒数,范围是从 0 到 999。
● 它用于获取当前秒内的毫秒数。

2.10 getTime()

功能:
Date.prototype.getTime() 返回当前日期对象的时间戳(自 1970 年 1 月 1 日以来的毫秒数)。
示例:


const date = new Date();
console.log(date.getTime());  // 返回自 1970 年 1 月 1 日以来的毫秒数

解释:
● getTime() 返回当前日期对象的时间戳,表示自 1970 年 1 月 1 日以来的毫秒数。
● 它常用于时间差的计算。

2.11 setFullYear()

功能:
Date.prototype.setFullYear() 用于设置当前日期对象的年份。
示例:


const date = new Date();
date.setFullYear(2025);
console.log(date.getFullYear());  // 2025

解释:
● setFullYear() 设置当前日期对象的年份,可以传递一个整数作为年份。
● 它会修改原始日期对象。

2.12 setMonth()

功能:
Date.prototype.setMonth() 用于设置当前日期对象的月份。
示例:


const date = new Date();
date.setMonth(5);  // 设置为 6 月
console.log(date.getMonth());  // 5 (6月,因为0表示1月)

解释:
● setMonth() 设置当前日期对象的月份,范围是 0 到 11,0 表示 1 月,11 表示 12 月。
● 它会修改原始日期对象。

2.13 setDate()

功能:
Date.prototype.setDate() 用于设置当前日期对象的日期。
示例:


const date = new Date();
date.setDate(15);
console.log(date.getDate());  // 15

解释:
● setDate() 设置当前日期对象的日期,范围是 1 到 31。
● 它会修改原始日期对象。

2.14 setHours()

功能:
Date.prototype.setHours() 用于设置当前日期对象的小时。
示例:


const date = new Date();
date.setHours(10);
console.log(date.getHours());  // 10

解释:
● setHours() 设置当前日期对象的小时,范围是 0 到 23。
● 它会修改原始日期对象。

2.15 setMinutes()

功能:
Date.prototype.setMinutes() 用于设置当前日期对象的分钟。
示例:


const date = new Date();
date.setMinutes(45);
console.log(date.getMinutes());  // 45

解释:
● setMinutes() 设置当前日期对象的分钟,范围是 0 到 59。
● 它会修改原始日期对象。

2.16 setSeconds()

功能:
Date.prototype.setSeconds() 用于设置当前日期对象的秒数。
示例:


const date = new Date();
date.setSeconds(30);
console.log(date.getSeconds());  // 30

解释:
● setSeconds() 设置当前日期对象的秒数,范围是 0 到 59。
● 它会修改原始日期对象。

2.17 setMilliseconds()

功能:
Date.prototype.setMilliseconds() 用于设置当前日期对象的毫秒数。
示例:


const date = new Date();
date.setMilliseconds(500);
console.log(date.getMilliseconds());  // 500

解释:
● setMilliseconds() 设置当前日期对象的毫秒数,范围是 0 到 999。
● 它会修改原始日期对象。

2.18 setTime()

功能:
Date.prototype.setTime() 用于设置当前日期对象的时间戳。
示例:


const date = new Date();
date.setTime(1000000000);
console.log(date.getTime());  // 1000000000

解释:
● setTime() 设置当前日期对象的时间戳(自 1970 年 1 月 1 日以来的毫秒数)。
● 它会修改原始日期对象。

3. date-fns 日期处理库

date-fns 是一个轻量级的日期处理库,提供了一些非常实用的日期处理函数,支持对日期的格式化、比较、计算等操作。

date-fns 这样的日期处理库是需要先安装的,才能在你的项目中使用。

npm install date-fns

3.1 format()

功能:
format() 方法用于格式化日期对象为指定格式的字符串。
示例:


const { format } = require('date-fns');
const formattedDate = format(new Date(), 'yyyy-MM-dd');
console.log(formattedDate);  // 输出:2025-03-13

解释:
● format() 接受两个参数,第一个是要格式化的 Date 对象,第二个是指定的日期格式(如 yyyy-MM-dd)。
● 它将返回一个格式化后的日期字符串。

3.2 addDays()

功能:
addDays() 方法用于向日期添加指定的天数。
示例:


const { addDays } = require('date-fns');
const newDate = addDays(new Date(), 7);
console.log(format(newDate, 'yyyy-MM-dd'));  // 输出:2025-03-20(当前日期加 7 天)

解释:
● addDays() 方法接受两个参数,第一个是日期对象,第二个是要添加的天数。
● 它返回一个新的日期对象,表示向指定日期添加天数后的结果。

3.3 subDays()

功能:
subDays() 方法用于从日期中减去指定的天数。
示例:


const { subDays } = require('date-fns');
const newDate = subDays(new Date(), 3);
console.log(format(newDate, 'yyyy-MM-dd'));  // 输出:2025-03-10(当前日期减去 3 天)

解释:
● subDays() 方法接受两个参数,第一个是日期对象,第二个是要减去的天数。
● 它返回一个新的日期对象,表示从指定日期中减去天数后的结果。

3.4 differenceInDays()

功能:
differenceInDays() 方法用于计算两个日期之间的天数差。
示例:


const { differenceInDays } = require('date-fns');
const startDate = new Date(2025, 2, 1);  // 2025-03-01
const endDate = new Date(2025, 2, 13);  // 2025-03-13
console.log(differenceInDays(endDate, startDate));  // 输出:12

解释:
● differenceInDays() 方法接受两个日期对象,并返回它们之间的天数差。
● 该方法会返回一个整数,表示两个日期之间相差的天数。

3.5 isBefore()

功能:
isBefore() 方法用于判断一个日期是否早于另一个日期。
示例:


const { isBefore } = require('date-fns');
const date1 = new Date(2025, 2, 1);  // 2025-03-01
const date2 = new Date(2025, 2, 13);  // 2025-03-13
console.log(isBefore(date1, date2));  // true

解释:
● isBefore() 方法返回一个布尔值,表示第一个日期是否早于第二个日期。

3.6 isAfter()

功能:
isAfter() 方法用于判断一个日期是否晚于另一个日期。
示例:


const { isAfter } = require('date-fns');
const date1 = new Date(2025, 2, 1);  // 2025-03-01
const date2 = new Date(2025, 2, 13);  // 2025-03-13
console.log(isAfter(date2, date1));  // true

解释:
● isAfter() 方法返回一个布尔值,表示第一个日期是否晚于第二个日期。

3.7 startOfDay()

功能:
startOfDay() 方法返回一天的开始时间(00:00:00)。
示例:


const { startOfDay } = require('date-fns');
const date = new Date(2025, 2, 13, 15, 30);  // 2025-03-13 15:30
console.log(startOfDay(date));  // 2025-03-13 00:00:00

解释:
● startOfDay() 方法将日期设置为当天的开始,即午夜(00:00:00)。
● 它返回一个新的日期对象。

3.8 endOfDay()

功能:
endOfDay() 方法返回一天的结束时间(23:59:59)。
示例:


const { endOfDay } = require('date-fns');
const date = new Date(2025, 2, 13, 15, 30);  // 2025-03-13 15:30
console.log(endOfDay(date));  // 2025-03-13 23:59:59

解释:
● endOfDay() 方法将日期设置为当天的结束时间,即23:59:59。
● 它返回一个新的日期对象。

3.9 parse()

功能:
parse() 方法将字符串解析为日期对象。
示例:


const { parse } = require('date-fns');
const parsedDate = parse('2025-03-13', 'yyyy-MM-dd', new Date());
console.log(parsedDate);  // 2025-03-13 00:00:00

解释:
● parse() 方法接受一个日期字符串、格式字符串和参考日期,将字符串解析为日期对象。
● yyyy-MM-dd 是指定的日期格式,new Date() 用作参考日期。

3.10 isValid()

功能:
isValid() 方法用于判断一个日期对象是否有效。
示例:


const { isValid } = require('date-fns');
const validDate = new Date(2025, 2, 13);  // 2025-03-13
const invalidDate = new Date('invalid-date');
console.log(isValid(validDate));  // true
console.log(isValid(invalidDate));  // false

解释:
● isValid() 方法返回一个布尔值,表示日期对象是否有效。
● 如果日期无效(例如通过错误字符串创建),返回 false。

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
biubonbiubonbiubiubiu的头像 - 宋马
评论 抢沙发

请登录后发表评论

    暂无评论内容