📜  UTC 时钟 - Javascript (1)

📅  最后修改于: 2023-12-03 15:20:55.597000             🧑  作者: Mango

UTC 时钟 - Javascript

JavaScript 是一种广泛使用的脚本语言,可用于实现各种功能,包括计算机内部时钟等。 UTC 时钟是一种常见的应用程序,它被广泛用于全球多个地区,可以在在不同时区进行时间调整和同步。

下面我们来介绍如何使用 JavaScript 实现一个 UTC 时钟。

获取当前时间

要创建 UTC 时钟,我们需要获取当前时间和 UTC 偏移量。 我们可以使用 JavaScript 的 Date 对象来获取当前时间。Date 对象会自动将时间转换为本地时区。

let currentDate = new Date();
获取 UTC 偏移量

因为 UTC 时间与本地时间的差异是由 UTC 偏移量表示的,因此我们需要获取当前和 UTC 的时差。可以使用变量 offsetMin 存储当前时区 UTC 偏移量。

let offsetMin = new Date().getTimezoneOffset();

请注意,getTimezoneOffset() 方法返回当前时区与 UTC 的分钟数之差,正常情况下会返回一个负数。

计算 UTC 时间

我们可以使用 Date.UTC() 函数将本地时间转换为 UTC 时间,并使用 new Date() 函数将 UTC 时间转换回本地时间。

let utcTime = new Date(Date.UTC(currentDate.getUTCFullYear(), currentDate.getUTCMonth(), currentDate.getUTCDay(),
    currentDate.getUTCHours(), currentDate.getUTCMinutes(), currentDate.getUTCSeconds()));

我们现在可以将其封装为一个名为 getUTCtime() 的函数:

function getUTCtime() {
    let offsetMin = new Date().getTimezoneOffset();
    let currentDate = new Date();
    let utcTime = new Date(Date.UTC(currentDate.getUTCFullYear(), currentDate.getUTCMonth(), currentDate.getUTCDay(),
        currentDate.getUTCHours(), currentDate.getUTCMinutes(), currentDate.getUTCSeconds()));
    return utcTime;
}
时间格式化

现在我们得到了 UTC 时间,我们需要以某种格式表示它。我们可以使用 Date.toLocaleString() 函数设置日期和时间的格式和语言。

function getFormattedTime() {
    let utcTime = getUTCtime();
    return utcTime.toLocaleString('en-US', {
        timeZone: 'UTC',
        hour12: false,
        year: 'numeric',
        month: 'numeric',
        day: 'numeric',
        hour: 'numeric',
        minute: 'numeric',
        second: 'numeric'
    });
}
代码片段

下面是完整的代码示例:

function getUTCtime() {
    let offsetMin = new Date().getTimezoneOffset();
    let currentDate = new Date();
    let utcTime = new Date(Date.UTC(currentDate.getUTCFullYear(), currentDate.getUTCMonth(), currentDate.getUTCDay(),
        currentDate.getUTCHours(), currentDate.getUTCMinutes(), currentDate.getUTCSeconds()));
    return utcTime;
}

function getFormattedTime() {
    let utcTime = getUTCtime();

    return utcTime.toLocaleString('en-US', {
        timeZone: 'UTC',
        hour12: false,
        year: 'numeric',
        month: 'numeric',
        day: 'numeric',
        hour: 'numeric',
        minute: 'numeric',
        second: 'numeric'
    });
}

使用上述代码,您可以获得一个任意时区的 UTC 时间,并以人类可读的形式输出。