XDSoft 发表于 2025-5-30 01:08:35

XDrxAPI 17 个 Time 函数帮助手册

1
函数名称: xdrx-time->julian

描述:
将日期时间转换为儒略日(Julian Date)

调用格式:
(xdrx-time->julian [日期时间字符串])

参数说明:
* [日期时间字符串]: 可选参数,格式为"YYYY-MM-DD HH:MM:SS"的字符串
若省略则使用当前系统时间

返回值:
返回转换后的儒略日数值(双精度浮点数)

示例用法1:
(xdrx-time->julian)
; 返回当前时间的儒略日

示例用法2:
(xdrx-time->julian "2025-05-30 12:00:00")
; 返回指定时间的儒略日

注意事项:
1. 支持60秒的特殊处理(自动进位到分钟)
2. 输入字符串需严格符合格式要求
3. 儒略日从公元前4713年1月1日正午开始计算
4. 精度可达毫秒级
------------------------------------------------------------
2
函数名称: xdrx-time->stamp

描述:
获取当前或指定时间的Unix时间戳

调用格式:
(xdrx-time->stamp); 无参数形式
(xdrx-time->stamp <年> <月> <日> [时] [分] [秒]); 带参数形式

参数说明:
无参数时: 返回当前系统时间戳
带参数时:
* <年>: 必须,年份(整数)
* <月>: 必须,月份(1-12)
* <日>: 必须,日期(1-31)
* [时]: 可选,小时(0-23),默认为0
* [分]: 可选,分钟(0-59),默认为0
* [秒]: 可选,秒数(0-59),默认为0

返回值:
Unix时间戳(从1970-01-01开始的秒数)

示例用法1:
(xdrx-time->stamp)
; 返回当前时间的Unix时间戳

示例用法2:
(xdrx-time->stamp 2025 5 30)
; 返回2025年5月30日0点的时间戳

注意事项:
1. 无参数调用返回当前时间戳
2. 带参数时前三个参数为必须
3. 自动取参数的绝对值
4. 返回32位整数时间戳
------------------------------------------------------------
3
函数名称: xdrx-time->timezone

描述:
获取当前系统时区信息

调用格式:
(xdrx-time->timezone)

参数说明:
无参数

返回值:
返回包含两个元素的列表:
1. 时区名称(字符串)
2. 与UTC的时差(分钟数,整数)

示例用法:
(xdrx-time->timezone)
; 返回示例: ("中国标准时间" 480); 表示UTC+8小时(480分钟)

注意事项:
1. 时区名称格式取决于操作系统
2. 时差值表示与UTC时间的分钟差
3. 自动获取当前系统时区设置
4. 夏令时调整已包含在返回值中
5. 中国标准时间返回480(UTC+8小时)
------------------------------------------------------------
4
函数名称: xdrx-time->timezoneoffset

描述:
获取当前系统时区偏移量(秒数)

调用格式:
(xdrx-time->timezoneoffset)

参数说明:
无参数

返回值:
返回与UTC的时区偏移量(秒数,整数)

示例用法:
(xdrx-time->timezoneoffset)
; 可能返回: 28800 (表示UTC+8小时)

注意事项:
1. 返回值包含夏令时调整(如果启用)
2. 正数表示UTC以东时区,负数表示UTC以西
3. 自动处理跨日期的时区计算
4. 中国标准时间通常返回28800(UTC+8小时)
------------------------------------------------------------
5
函数名称: xdrx-time->today

描述:
获取当前系统日期

调用格式:
(xdrx-time->today)

参数说明:
无参数

返回值:
返回包含三个元素的列表:
1. 年(整数)
2. 月(1-12)
3. 日(1-31)

示例用法:
(xdrx-time->today)
; 可能返回: (2025 5 30)

注意事项:
1. 返回当前系统日期
2. 月份和日期不带前导零
3. 基于本地时区计算
4. 返回值可直接用于日期计算
------------------------------------------------------------
6
函数名称: xdrx-time<-julian

描述:
将儒略日转换为本地时间字符串

调用格式:
(xdrx-time<-julian <儒略日> [格式字符串])

参数说明:
* <儒略日>: 必须,儒略日数值(双精度浮点数)
* [格式字符串]: 可选,输出时间格式(默认"%Y-%m-%d %H:%M:%S")

返回值:
返回格式化后的本地时间字符串

示例用法1:
(xdrx-time<-julian 2460866.5)
; 返回: "2025-05-30 12:00:00"

示例用法2:
(xdrx-time<-julian 2460866.5 "%Y年%m月%d日")
; 返回: "2025年05月30日"

注意事项:
1. 自动处理时区转换(包含夏令时)
2. 格式字符串会自动添加%前缀(如"Y-m-d"变为"%Y-%m-%d")
3. 儒略日从公元前4713年1月1日正午开始计算
4. 支持标准strftime格式代码
------------------------------------------------------------
7
函数名称: xdrx-time<-timeserver

描述:
从多个NTP服务器异步获取网络时间并转换为本地儒略日

调用格式:
(xdrx-time<-timeserver)

参数说明:
无参数

返回值:
成功返回本地时间的儒略日数值(双精度浮点数),失败返回nil

示例用法:
(xdrx-time<-timeserver)
; 可能返回: 2460866.708333 (表示2025-05-30 17:00:00)

注意事项:
1. 使用5个公共NTP服务器(阿里云、Windows、NIST等)
2. 采用异步UDP协议查询,超时3秒
3. 自动选择最快响应,取多个服务器平均值
4. 包含DNS缓存优化
5. 需要联网权限
6. 自动转换为本地时区(含夏令时)
7. 精度可达毫秒级
------------------------------------------------------------
8
函数名称: xdrx-time-checkdate

描述:
验证日期是否有效

调用格式:
(xdrx-time-checkdate <年> <月> <日>)

参数说明:
* <年>: 必须,年份(整数)
* <月>: 必须,月份(1-12)
* <日>: 必须,日期(1-31)

返回值:
日期有效返回T,否则返回nil

示例用法1:
(xdrx-time-checkdate 2025 2 29)
; 返回: nil (2025年不是闰年)

示例用法2:
(xdrx-time-checkdate 2024 2 29)
; 返回: T (2024年是闰年)

注意事项:
1. 自动取参数的绝对值
2. 严格验证月份天数(包括闰年)
3. 支持公元前年份
4. 不验证时间部分
------------------------------------------------------------
9
函数名称: xdrx-time-countleapyears

描述:
计算两个年份之间的闰年数量

调用格式:
(xdrx-time-countleapyears <起始年> [结束年])

参数说明:
* <起始年>: 必须,起始年份(整数)
* [结束年]: 可选,结束年份(默认当前年)

返回值:
返回闰年数量(整数)

示例用法1:
(xdrx-time-countleapyears 2000 2024)
; 返回: 7 (2000-2024年间的闰年数)

示例用法2:
(xdrx-time-countleapyears 2020)
; 返回: 2 (2020-2025年间的闰年数)

注意事项:
1. 自动取参数的绝对值
2. 包含起始年和结束年
3. 遵循格里高利闰年规则
4. 支持公元前年份计算
5. 单参数时自动使用当前年作为结束年
------------------------------------------------------------
10
函数名称: xdrx-time-dayofweek

描述:
获取指定日期的星期几

调用格式:
(xdrx-time-dayofweek [儒略日])

参数说明:
* [儒略日]: 可选,目标日期(默认当前日期)

返回值:
返回星期几的字符串("星期一"到"星期日")

示例用法1:
(xdrx-time-dayofweek)
; 返回: "星期五" (当前日期)

示例用法2:
(xdrx-time-dayofweek 2460866.5)
; 返回: "星期五" (2025-05-30)

注意事项:
1. 无参数时返回当前星期几
2. 支持儒略日参数
3. 返回中文星期名称
4. 自动处理时区转换
------------------------------------------------------------
11
函数名称: xdrx-time-dayofyear

描述:
获取指定日期在当年中的天数(1-366)

调用格式:
(xdrx-time-dayofyear [儒略日])

参数说明:
* [儒略日]: 可选,目标日期(默认当前日期)

返回值:
返回当年中的天数(整数)

示例用法1:
(xdrx-time-dayofyear)
; 返回: 150 (2025-05-30是第150天)

示例用法2:
(xdrx-time-dayofyear 2460866.5)
; 返回: 150 (2025-05-30是第150天)

注意事项:
1. 无参数时返回当前日期的年天数
2. 支持儒略日参数
3. 返回值范围1-366(闰年)
4. 自动处理时区转换
------------------------------------------------------------
12
函数名称: xdrx-time-daysfrom1900

描述:
计算从1900年1月1日到指定日期的天数

调用格式:
(xdrx-time-daysfrom1900 [<年> <月> <日> | <天数>])

参数说明:
* 格式1: <年> <月> <日> - 目标日期(3个整数)
* 格式2: <天数> - 从1900年1月1日开始的天数(1个整数)
* 无参数 - 使用当前日期

返回值:
返回从1900年1月1日开始的天数(整数)

示例用法1:
(xdrx-time-daysfrom1900 2025 5 30)
; 返回: 45795 (2025-05-30距1900-01-01的天数)

示例用法2:
(xdrx-time-daysfrom1900)
; 返回: 45795 (当前日期距1900-01-01的天数)

注意事项:
1. 自动取参数的绝对值
2. 无参数时使用当前日期
3. 正确处理闰年计算
4. 支持1900年之前的日期
5. 参数为0时视为无参数
------------------------------------------------------------
13
函数名称: xdrx-time-format

描述:
格式化日期时间为指定格式字符串

调用格式:
(xdrx-time-format [儒略日] [格式字符串])

参数说明:
* [儒略日]: 可选,目标日期(默认当前日期)
* [格式字符串]: 可选,格式说明(默认"%Y-%m-%d %H:%M:%S")

返回值:
返回格式化后的日期时间字符串

示例用法1:
(xdrx-time-format)
; 返回: "2025-05-30 00:59:21" (当前时间)

示例用法2:
(xdrx-time-format 2460866.5 "%Y年%m月%d日")
; 返回: "2025年05月30日"

格式说明:
%Y - 四位年份
%m - 两位月份
%d - 两位日期
%H - 24小时制小时
%M - 分钟
%S - 秒

注意事项:
1. 无参数时使用当前日期时间
2. 支持标准strftime格式
3. 自动处理时区转换
4. 格式字符串区分大小写
------------------------------------------------------------
14
函数名称: xdrx-time-leapyear-p

描述:
判断指定年份是否为闰年

调用格式:
(xdrx-time-leapyear-p <年份>)

参数说明:
* <年份>: 必须,待判断的年份(整数)

返回值:
是闰年返回T,否则返回nil

示例用法1:
(xdrx-time-leapyear-p 2024)
; 返回: T (2024年是闰年)

示例用法2:
(xdrx-time-leapyear-p 2025)
; 返回: nil (2025年不是闰年)

注意事项:
1. 遵循格里高利闰年规则
2. 支持公元前年份判断
3. 自动处理负年份(取绝对值)
4. 返回值严格遵循LISP布尔值规范
------------------------------------------------------------
15
函数名称: xdrx-time-local2utc

描述:
将本地时间转换为UTC时间(儒略日格式)

调用格式:
(xdrx-time-local2utc [儒略日])

参数说明:
* [儒略日]: 可选,本地时间(默认当前时间)

返回值:
返回UTC时间的儒略日数值

示例用法1:
(xdrx-time-local2utc)
; 返回: 2460865.959 (当前UTC时间)

示例用法2:
(xdrx-time-local2utc 2460866.5)
; 返回: 2460866.459 (转换后的UTC时间)

注意事项:
1. 无参数时使用当前本地时间
2. 自动处理时区偏移
3. 返回值为双精度浮点数
4. 支持反向转换(xdrx-time-utc2local)
5. 精确到毫秒级
------------------------------------------------------------
16
函数名称: xdrx-time-setlocaltime

描述:
从网络时间服务器同步并设置本地系统时间

调用格式:
(xdrx-time-setlocaltime)

返回值:
成功返回设置后的时间字符串,失败返回nil

示例用法:
(xdrx-time-setlocaltime)
; 返回: "2025-05-30 01:02:52" (设置成功后的时间)

注意事项:
1. 需要网络连接访问时间服务器
2. 需要管理员权限修改系统时间
3. 自动处理时区转换
4. 使用NTP协议获取UTC时间
5. 返回格式为"%Y-%m-%d %H:%M:%S"
------------------------------------------------------------
17
函数名称: xdrx-time-weekofyear

描述:
获取指定日期在当年中的周数(ISO标准)

调用格式:
(xdrx-time-weekofyear [儒略日])

参数说明:
* [儒略日]: 可选,目标日期(默认当前日期)

返回值:
返回当年中的周数(1-53)

示例用法1:
(xdrx-time-weekofyear)
; 返回: 22 (当前日期是第22周)

示例用法2:
(xdrx-time-weekofyear 2460866.5)
; 返回: 22 (2025-05-30是第22周)

注意事项:
1. 采用ISO 8601周数标准
2. 无参数时使用当前日期
3. 周数范围1-53
4. 每周从周一开始
5. 第一周包含当年第一个星期四
------------------------------------------------------------


tigcat 发表于 2025-5-30 22:44:58

感谢站长分享成果。
页: [1]
查看完整版本: XDrxAPI 17 个 Time 函数帮助手册