跳过正文
  1. Lumesh 文档/
  2. 内置模块函数/

Lumesh Time 模块

2552 字·6 分钟
目录

模块路径time 使用 help time 查看帮助

功能描述:提供时间获取、解析、计算和格式化功能


函数目录
#

功能类别函数名调用格式核心功能
时间获取nowTime.now [format]获取当前时间(对象或格式化字符串)
时间获取displayTime.display获取预格式化时间信息(多种格式的映射)
时间获取stampTime.stamp [datetime]获取Unix时间戳(秒)
时间获取stamp_msTime.stamp_ms [datetime]获取Unix时间戳(毫秒)
时间解析与格式化parseTime.parse [format] datetime_str解析时间字符串为时间对象
时间解析与格式化fmtTime.fmt format_str [datetime]格式化时间对象为字符串
时间解析与格式化to_stringTime.to_string datetime [format]转换时间对象为字符串(默认RFC3339)
时间运算addTime.add duration [base_time]给时间增加持续时间
时间运算diffTime.diff time1 time2 unit计算两个时间的差值(指定单位)
时间运算timezoneTime.timezone datetime ofTimeet_hours转换时区(按小时偏移)
时间组件获取yearTime.year [datetime]获取年份
时间组件获取monthTime.month [datetime]获取月份(1-12)
时间组件获取weekdayTime.weekday [datetime]获取星期几(1-7,周一为1)
时间组件获取dayTime.day [datetime]获取日期(1-31)
时间组件获取hourTime.hour [datetime]获取小时(0-23)
时间组件获取minuteTime.minute [datetime]获取分钟(0-59)
时间组件获取secondTime.second [datetime]获取秒数(0-59)
时间组件获取secondsTime.seconds [datetime]获取自午夜起的秒数
其他功能sleepTime.sleep duration暂停执行指定时长
其他功能is_leap_yearTime.is_leap_year [year]判断是否为闰年
其他功能from_mapTime.from_map [map]通过组件创建时间对象

函数详解
#

1. 时间获取函数
#

Time.now - 获取当前时间
#

参数说明

参数模式参数类型作用描述
无参数-返回当前时间的DateTime对象
单参数String使用指定格式返回格式化字符串

返回值DateTime对象或String 示例

1Time.now()           # => DateTime(2024-06-18T15:30:45)
2Time.now "%Y年%m月%d日"  # => "2024年06月18日"

Time.display - 获取预格式化时间信息
#

参数说明:无参数 返回值:包含多种时间格式的映射(Map类型),键包括:

  • time: 24小时制时间(HH:MM:SS)
  • timepm: 12小时制时间(h:mm AM/PM)
  • date: 日期(YYYY-MM-DD)
  • datetime: 日期时间(YYYY-MM-DD HH:MM:SS)
  • rfc3339: RFC3339格式
  • rfc2822: RFC2822格式
  • week: 一年中的第几周
  • ordinal: 一年中的第几天
  • datetime_obj: 原始DateTime对象

示例

 1Time.display()
 2
 3# 输出示例:
 4+------------------------------------------------+
 5| KEY           VALUE                            |
 6+================================================+
 7| datetime_obj  2025-06-01 16:38:50.279424998    |
 8| week          22                               |
 9| timepm        "4:38 PM"                        |
10| rfc2822       "Sun, 1 Jun 2025 16:38:50 +0800" |
11| ordinal       152                              |
12| date          "2025-06-01"                     |
13| rfc3339       "2025-06-                        |
14|               01T16:38:50.279424998+08:00"     |
15| time          "16:38:50"                       |
16| datetime      "2025-06-01 16:38:50"            |
17+------------------------------------------------+

Time.stamp - 获取Unix时间戳(秒)
#

参数说明

参数模式参数类型作用描述
无参数-返回当前时间戳
单参数DateTimeString返回指定时间的时间戳

返回值Integer(时间戳,单位秒) 示例

1Time.stamp()             # => 1718703045
2Time.stamp "2024-06-18 00:00:00"  # => 1718640000

Time.stamp_ms - 获取Unix时间戳(毫秒)
#

参数说明:同Time.stamp 返回值Integer(时间戳,单位毫秒) 示例

1Time.stamp_ms()             # => 1718703045123

2. 时间解析与格式化函数
#

Time.parse - 解析时间字符串
#

参数说明

参数类型作用描述
1(可选)String时间格式(默认尝试常见格式,如"%Y-%m-%d %H:%M")
2String待解析的时间字符串

支持格式示例

  • %Y-%m-%d %H:%M → "2024-06-18 15:30"
  • %Y-%m-%d %H:%M:%S
  • %d/%m/%Y %H:%M:%S → "18/06/2024 15:30:45"
  • %m/%d/%Y %I:%M %p → "06/18/2024 03:30 PM"

返回值DateTime对象 示例

1Time.parse "2024-06-18 15:30"
2Time.parse "%d/%m/%Y %-I:%M %p" "18/06/2024 3:30 PM"
3
4# 返回
5>> [DateTime] <<
62024-06-18 15:30:00

Time.fmt - 格式化时间
#

参数说明

参数类型作用描述
1String格式字符串
2(可选)DateTimeString待格式化的时间(默认当前时间)

格式符号参考

  • %Y:四位年份(2024)
  • %m:月份(01-12)
  • %d:日期(01-31)
  • %H:24小时制小时(00-23)
  • %M:分钟(00-59)
  • %S:秒(00-59)

返回值String 示例

1Time.fmt "%Y-%m-%d"                      # => "2024-06-18"
2Time.fmt "%H:%M:%S" (Time.parse "2024-06-18 15:30:45")
3# => "15:30:45"

Time.to_string - 转换为字符串
#

参数说明

参数类型作用描述
1DateTime时间对象
2(可选)String格式字符串(默认RFC3339)

返回值String 示例

1Time.to_string(Time.now())                 # => "2024-06-18T15:30:45+08:00"
2Time.to_string Time.now() "%Y%m%d"        # => "20240618"

3. 时间运算函数
#

Time.add - 增加时间间隔
#

参数说明

参数类型作用描述
1StringInteger...持续时间(字符串如"1h30m"或多个数字参数)
2(可选)DateTime基准时间(默认当前时间)

持续时间格式

  • 1d2h30m = 1天2小时30分钟
  • 3600s = 3600秒(1小时)
  • 多参数模式:秒 分 时 天(如 0 30 0 = 30分钟)

返回值DateTime对象 示例

1Time.add "1h30m"                  # => 当前时间加1小时30分钟
2Time.add 3600 Time.now()          # => 加3600秒(1小时)
3Time.add 0 30 0                   # => 加30分钟(旧式多参数)

Time.diff - 计算时间差
#

参数说明

参数类型作用描述
1String单位("s"秒、"m"分、"h"时、"d"天)
2DateTime时间1
3DateTime时间2

返回值Integer(时间差,按指定单位) 示例

1let t1 = (Time.parse "2024-06-18 12:00")
2let t2 = (Time.parse "2024-06-18 13:30")
3Time.diff "m" t1 t2       # => 90(分钟)

Time.timezone - 转换时区
#

参数说明

参数类型作用描述
1Integer时区偏移(小时,如+8、-5)
2DateTime时间对象

返回值DateTime对象(调整时区后的时间) 示例

1let utc_time = (Time.parse "2024-06-18 08:00")
2Time.timezone 8 utc_time      # => DateTime(2024-06-18T16:00:00+08:00)

4. 时间组件获取函数
#

通用说明

  • 函数包括:year, month, weekday, day, hour, minute, second, seconds
  • 参数模式:
    • 无参数:获取当前时间的对应组件
    • 单参数(DateTimeString):获取指定时间的对应组件

返回值Integer

示例

1Time.month                     # => 6(当前月份)
2Time.weekday "2024-06-18"      # => 2(星期二)
3Time.seconds                   # => 55845(当前时间距离午夜秒数)

5. 其他功能函数
#

Time.sleep - 暂停执行
#

参数说明

参数类型作用描述
1IntegerString休眠时间(毫秒数或持续时间字符串如"1s")

持续时间单位

  • s:秒(如"30s")
  • m:分钟(如"10m")
  • h:小时(如"2h")
  • d:天(如"1d")

返回值None 示例

1Time.sleep 1000      # 休眠1秒
2Time.sleep "2m30s"   # 休眠2分30秒

Time.is_leap_year - 判断闰年
#

参数说明

参数模式参数类型作用描述
无参数-判断当前年份是否为闰年
单参数Integer判断指定年份是否为闰年

返回值Boolean 示例

1Time.is_leap_year()     # => false(2025年不是闰年)
2Time.is_leap_year(2024)     # => true(2024年是闰年)

Time.from_map - 通过组件创建时间
#

参数说明

参数类型作用描述
1Map包含年月日,时分秒的结构

返回值DateTime对象 示例

 1let m = {
 2  year: 2025,
 3  month: 3,
 4  day: 28,
 5  hour: 12,
 6  minute: 5,
 7  second: 38
 8}
 9Time.from_map m
10# => DateTime(2024-06-18T15:30:00)

综合使用示例
#

计算工作日倒计时

 1# 定义目标日期
 2let target = (Time.parse "2024-12-31 18:00")
 3
 4# 计算剩余工作日(假设周六、日休息)
 5fn workdays_remaining(target) {
 6  now = (Time.now())
 7  days = (Time.diff "d" now target)   # 总天数差
 8  weeks = (Math.floor(days / 7))
 9  let extra_days = (days % 7)
10  let weekend_days = ((weeks * 2) + (Math.min extra_days 2))
11  let workdays = (days - weekend_days)
12  return workdays
13}
14
15print (workdays_remaining(target))

Notes
#

实际使用时,支持链式调用,如:

1let a = t'2025-7-13 19:45'
2a.diff('d', t'2024-1-1')

在示例中,为方便理解,仅使用了类型名称调用。

相关文章