You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby中带毫秒的Time对象生成及ISO8601格式转换问题

问题原因与解决方案

问题根源

Time.utc方法的最后一个参数接收的是微秒(1秒=1,000,000微秒),你传入的100仅代表0.1毫秒,不足1毫秒,因此输出时会被截断为000,导致毫秒信息丢失。

正确实现方式

1. 传入正确的微秒值

要表示100毫秒,需要传入100 * 1000 = 100000微秒:

Time.utc(2022, 10, 1, 22, 38, 45, 100000).in_time_zone.iso8601(3)
# 输出:"2022-10-01T22:38:45.100Z"

2. 直接解析带毫秒的字符串(更直观)

如果不需要拆分时间分量,用Time.parse直接构造目标时间:

Time.parse("2022-10-01T22:38:45.100Z").iso8601(3)
# 输出:"2022-10-01T22:38:45.100Z"

3. Rails环境下的简化写法

如果是Rails项目,可借助ActiveSupport的时区方法:

ActiveSupport::TimeZone['UTC'].parse("2022-10-01 22:38:45.100").iso8601(3)
# 输出:"2022-10-01T22:38:45.100Z"

内容的提问来源于stack exchange,提问作者nanakondor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 22:35:20