我有 UTC 日期字串"2022-01-06T13:35:00Z"和時區字串"Romance Standard Time"。如何在 JavaScript(在瀏覽器中)中使用該時區字串,以便我可以將時間更正為14:35?
到目前為止,我發現的時區庫使用 IANA 時區,例如"Europe/Copenhagen",因此可以轉換"Romance Standard Time"為類似時區的庫也可以"Europe/Paris"回答我的問題。在 .NET 而不是 JavaScript 中完成轉換是可以接受的。
uj5u.com熱心網友回復:
JavaScript
如果你想用 Javascript 來做,有多個庫。我最熟悉moment.js,但是它們已被棄用,這意味著如果您正在處理一個新專案,您可能希望使用另一個庫。
moment.js 建議的庫串列。
無論如何,如果您希望使用時刻并轉換為時區,您可以使用Moment-Timezone輕松完成。所有支持的時區。
例如:
const moment = require('moment-timezone');
const timeZone = "Europe/Paris";
const ISOString = "2022-01-06T13:35:00Z"; //2022-01-06T13:35:00Z
const momentDefault = moment(ISOString).format(); //2022-01-06T14:35:00 01:00
const momentTz = moment.utc(ISOString).tz(timeZone).format(); //2022-01-06T14:35:00 01:00
如您所見,moment 默認獲取時區并將 ISOString 作為 UTC 值處理,因此它會自動將該值轉換為客戶端用戶的時區。
您仍然可以明確告訴 moment 將 ISOString 作為 UTC ISOString 處理,然后將其轉換為您定義的特定時區。這樣,客戶端的時區將被忽略。
.NET C#
要將時間轉換為 C# 中的特定時區,您不需要任何額外的包,您可以簡單地執行以下操作:
var isoString = "2022-01-06T13:35:00Z";
var utcDate= DateTime.Parse(isoString);
var timeZone = "Romance Standard Time";
var date = TimeZoneInfo.ConvertTime(utcDate, TimeZoneInfo.FindSystemTimeZoneById(timeZone)); //01/06/2022 14:35:00
在這里您可以找到所有支持的 timezoneIds 的串列
uj5u.com熱心網友回復:
關鍵是要了解這"Romance Standard Time"是一個Windows 時區 ID。其他所有人都使用IANA 時區 ID。它們具有區域/城市格式,例如"Europe/Copenhagen".
在 .NET 6 中,可以在格式之間進行轉換。這是.NET 6 中的日期、時間和時區增強的代碼示例。
// Conversion from Windows to IANA when a region is unknown.
string windowsTimeZoneId = "Eastern Standard Time";
if (!TimeZoneInfo.TryConvertWindowsIdToIanaId(
windowsTimeZoneId, out string ianaTimeZoneId))
{
throw new TimeZoneNotFoundException(
$"No IANA time zone found for "{windowsTimeZoneId}".");
}
Console.WriteLine($"{windowsTimeZoneId} => {ianaTimeZoneId}");
// "Eastern Standard Time => America/New_York"
// Conversion from Windows to IANA when a region is known.
string windowsTimeZoneId = "Eastern Standard Time";
string region = "CA"; // Canada
if (!TimeZoneInfo.TryConvertWindowsIdToIanaId(
windowsTimeZoneId, region, out string ianaTimeZoneId))
{
throw new TimeZoneNotFoundException(
$"No IANA time zone found for "{windowsTimeZoneId}" in "{region}".");
}
Console.WriteLine($"{windowsTimeZoneId} {region} => {ianaTimeZoneId}");
// "Eastern Standard Time CA => America/Toronto"
如果您使用的是 .NET 的早期版本,則可以使用TimeZoneConverter。如果您需要構建自己的轉換器,這里有一個完整的時區串列:windowsZones.json。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/406529.html
標籤:
