os

显示已弃用

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

该库目前用于提供 UTC 格式下系统时间的信息的目的。它已被标准 Lua os 库重新沙箱化,不允许您执行任何系统操作。

概要

职能

  • 返回自定义基准的时间(秒),精度为微秒级。

  • date(formatString : string,time : number):Dictionary

    根据给定时间格式化给定的字符串,包含日期/时间信息。

  • 返回从一个时间到另一个时间的秒数。

  • time(time : table):number

    返回自 Unix 时代(1970 年 1 月 1 日 00:00:00)以来已过多少秒的 UTC 时间。

职能

clock

返回自定义基准的时间(秒),精度为微秒级。这个函数对于比较同一计算机上发生的两个事件之间的持续时间有用,是最好的性能测试选择。

与函数如 os.time()DateTime.now() 等不同,调整系统时间(例如由用户或 NTP )不会导致时间向前或向后跳跃。


-- 记录初始时间:
local startTime = os.clock()
-- 做出你想要测量性能的东西:
local a, b = 0, 1
for _ = 1, 5000000 do
a, b = b, a
end
-- 测量这需要多长时间:
local deltaTime = os.clock() - startTime
print("Elapsed time: " .. deltaTime)
--> Elapsed time: 0.044425600033719 (actual number may vary)

返回

格式化给定的 formatString 与基于给定时间的日期/时间信息,或如果未提供,由 os.time() 返回的值。

在新工作中应避免使用此函数。 取而代之,使用 DateTime API,它支持本地化格式化。

以下特定器(基于 C 函数 strftime)被支持:


<th>意义</th>
<th>例子 <sup>†</sup></th>
</tr>
</thead>
<tbody>
<tr>
<td>%a</td>
<td>缩写工作日名称*</td>
<td>星期一</td>
</tr>
<tr>
<td>%A</td>
<td>全周日名称*</td>
<td>星期一</td>
</tr>
<tr>
<td>%b</td>
<td>简短的月名*</td>
<td>2月</td>
</tr>
<tr>
<td>%B</td>
<td>全月名称*</td>
<td>二月</td>
</tr>
<tr>
<td>%c</td>
<td>日期和时间*</td>
<td>周一 21214:14:35 2024</td>
</tr>
<tr>
<td>%d</td>
<td>月的一天</td>
<td>12</td>
</tr>
<tr>
<td>%H</td>
<td>小时,使用 24 小时钟</td>
<td>14</td>
</tr>
<tr>
<td>%I</td>
<td>小时,使用 12 小时制时钟</td>
<td>02</td>
</tr>
<tr>
<td>%j</td>
<td>年的日子</td>
<td>043</td>
</tr>
<tr>
<td>%m</td>
<td>月</td>
<td>02</td>
</tr>
<tr>
<td>%M</td>
<td>分钟</td>
<td>14</td>
</tr>
<tr>
<td>%p</td>
<td>“AM”或“PM”</td>
<td>PM</td>
</tr>
<tr>
<td>%S</td>
<td>第二</td>
<td>35</td>
</tr>
<tr>
<td>%U</td>
<td>周数(第一个周日为第一周的第一天)</td>
<td>06</td>
</tr>
<tr>
<td>%w</td>
<td>工作日</td>
<td>1</td>
</tr>
<tr>
<td>%W</td>
<td>周数(第一天为第一周的第一天)</td>
<td>07</td>
</tr>
<tr>
<td>%x</td>
<td>日期*</td>
<td>02/12/24</td>
</tr>
<tr>
<td>%X</td>
<td>时间*</td>
<td>14:14:35</td>
</tr>
<tr>
<td>%y</td>
<td>两位数年份</td>
<td>24</td>
</tr>
<tr>
<td>%Y</td>
<td>全年</td>
<td>2024</td>
</tr>
<tr>
<td>%z</td>
<td>ISO 8601 UTC时区的抵消(1分钟=11小时=100)</td>
<td>-0800</td>
</tr>
<tr>
<td>%Z</td>
<td>时区名称或缩写*</td>
<td>PST</td>
</tr>
<tr>
<td>%%</td>
<td>% 字符</td>
<td>%</td>
</tr>
</tbody>
指定器

※此值可根据当前本地变化。

† 提供的示例为 2024 年 2 月 12 日 (星期一) 下午 2:14:35 (14:14:35),使用太平洋标准时间 (PST) 本地运行“en-us”。

如果提供的 formatString 是准确地 "*t" (本地时间) 或 "!*t" (UTC时间),这个函数会返回包含以下组件的词典,这通常在上面的特别符号中可用。


<th>类型</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>年</td>
<td>int</td>
<td>描述当前时代当前年份的整数(例如 2017)</td>
</tr>
<tr>
<td>月</td>
<td>int</td>
<td>在 112 之间的整数(从 1 月开始),用于描述当前月份。</td>
</tr>
<tr>
<td>wday</td>
<td>int</td>
<td>一个介于 17 之间的整数(从星期日开始),用于描述当前的周日。</td>
</tr>
<tr>
<td>yday</td>
<td>int</td>
<td>介于 1366 之间的整数,描述我们进入年份的多少天。如果是跳年,可能有 366 天。</td>
</tr>
<tr>
<td>天</td>
<td>int</td>
<td>介于 131 之间的整数,用于描述当前月份的当日。</td>
</tr>
<tr>
<td>小时</td>
<td>int</td>
<td>介于 124 之间的整数,用于描述当前一天的时间。</td>
</tr>
<tr>
<td>分钟</td>
<td>int</td>
<td>一个介于 059 之间的整数,用于描述当前小时的分钟。</td>
</tr>
<tr>
<td>秒</td>
<td>int</td>
<td>一个介于 060 之间的整数,描述当前小时的第二秒钟。(60 因为函数被描述用于指示跳秒,但在实践中可能不会)</td>
</tr>
<tr>
<td>isdst</td>
<td>bool</td>
<td>一个描述是否在当前启用日光节约时间的 boolean 值。</td>
</tr>
</tbody>
领域

参数

formatString: string

必须是 "*t""!*t"

time: number

要格式化的时间值。

difftime

返回从 t1t2 的秒数。不同之处是假设 t1t2 正确地转换为 time_t 格式。

参数

t2: number
t1: number

返回

time

返回自 Unix 时代(1970 年 1 月 1 日 00:00:00)以来已经过多少秒,在当前 UTC 时间下。如果提供了类似于 os.date() 返回的表格式,它将返回从那时起的秒数。

请注意,返回的时间使用了设备的本地时间。大多数操作系统会自动将本地时间同步到在线时间服务器,因此这应该在几百毫秒内。然而,用户可以轻松禁用同步行为并将系统时间设置为任何他们想要的内容;对于客户端和服务器之间的同步时间,请使用 Workspace:GetServerTimeNow() 取代。

在新工作中应避免使用此函数。 取而代之,使用 DateTime API,它支持本地化格式化。

当您需要精确地测量两个时间点之间的时间间隔,例如在测试性能时,请使用 os.clock() 取而代之。

参数

time: table

描述特定时间的词典表,类似于由 os.date() 返回的时间。如果未提供,将使用当前的 UTC 时间。

默认值:UTC time

返回