在前端开发中,我们经常需要将本地时间转换为协调世界时(UTC)格式。UTC是一种标准的时间格式,通用于全球各地,并且不受时区的影响。在本文中,我们将探讨 JavaScript 中如何将日期转换为 UTC 格式。
使用 toUTCString() 方法
JavaScript 内置了一个 toUTCString() 方法,它可以将 Date 对象转换为 UTC 时间字符串。该方法返回一个字符类型的值,表示相应日期对象的 UTC 格式时间。下面是使用 toUTCString() 方法将本地时间转换为 UTC 时间的示例代码:
const localDate = new Date() const utcDate = localDate.toUTCString() console.log(utcDate) // "Thu, 07 Apr 2023 01:32:33 GMT"
上述代码中,我们首先创建了一个本地时间对象 localDate,然后调用其 toUTCString() 方法将其转换为 UTC 时间字符串并存储在 utcDate 变量中。最后,我们通过 console.log() 输出了这个 UTC 时间字符串 "Thu, 07 Apr 2023 01:32:33 GMT"。
需要注意的是,toUTCString() 方法返回的是带有 GMT 后缀的字符串,这是因为 UTC 时间是以 GMT 作为基准的。如果你需要去除 GMT 后缀,可以使用 slice() 方法或正则表达式进行操作。
使用 toISOString() 方法
除了 toUTCString() 方法之外,JavaScript 还提供了 toISOString() 方法用于将日期对象转换为 ISO 标准格式的字符串,该方法返回的字符串表示相应日期时间的 UTC 格式。下面是使用 toISOString() 方法将本地时间转换为 UTC 时间的示例代码:
const localDate = new Date() const utcDate = localDate.toISOString() console.log(utcDate) // "2023-04-07T01:32:33.475Z"
上述代码中,我们首先创建了一个本地时间对象 localDate,然后调用其 toISOString() 方法将其转换为 UTC 时间字符串并存储在 utcDate 变量中。最后,我们通过 console.log() 输出了这个 UTC 时间字符串 "2023-04-07T01:32:33.475Z"。
需要注意的是,在 ISO 标准格式中,UTC 时间字符串以 "Z" 结尾,表示 UTC 时区。如果你想删除这个结尾,可以使用 slice() 方法或正则表达式进行操作。
使用 getTimezoneOffset() 方法
除了以上两种方法之外,JavaScript 还提供了 getTimezoneOffset() 方法来获取本地时间与 UTC 时间之间的时间差(单位是分钟)。我们可以利用这个时间差来手动将本地时间转换为 UTC 时间。下面是使用 getTimezoneOffset() 方法手动将本地时间转换为 UTC 时间的示例代码:
const localDate = new Date() const timeZoneOffset = localDate.getTimezoneOffset() const utcTime = localDate.getTime() + (timeZoneOffset * 60 * 1000) const utcDate = new Date(utcTime) console.log(utcDate) // "Thu Apr 07 2023 01:32:33 GMT+0000 (Coordinated Universal Time)"
上述代码中,我们首先创建了一个本地时间对象 localDate,然后调用其 getTimezoneOffset() 方法获取本地时间与 UTC 时间之间的时间差(单位是分钟),并将其存储在 timeZoneOffset 变量中。接着,我们使用 getTime() 方法获取 localDate 对象的时间戳,并将其加上 timeZoneOffset 分钟的值,得到了对应的 UTC 时间戳。最后,我们将这个 UTC 时间戳传递给 Date 构造函数,创建一个新的 UTC 时间对象 utcDate,并通过 console.log() 输出了这个 UTC 时间对象 "Thu Apr 07 2023 01:32:33 GMT+0000 (Coordinated Universal Time)"。
需要注意的是,在手动转换时,我们需要将时间差乘以 60 和
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/8298