如何将DateTime转换为不同的时区?

问题描述 投票:5回答:3

如何将DateTime转换为不同的时区?DateTime类具有两种方法.toLocal()和.toUtc()。但是,如果我想在其他时区显示时间。我该怎么办?

dart angular-dart
3个回答
2
投票

[DateTime不包含时区信息,因此仅在系统和UTC的时区可用时,您无法在特定时区中创建DateTime

您可以将DateTime包装在自定义类中,并将时区信息添加到包装器中。您还需要每个时区的偏移量表,然后从UTC日期添加/减去偏移量。


0
投票

您可以使用TimeZoneInfo.ConvertTime()更改时区。尝试这样

DateTime hwTime = new DateTime(2007, 02, 01, 08, 00, 00);
try {
    TimeZoneInfo hwZone = TimeZoneInfo.FindSystemTimeZoneById("Hawaiian Standard Time");
    TimeZoneInfo.ConvertTime(hwTime, hwZone, TimeZoneInfo.Local));
}
catch (TimeZoneNotFoundException) {
    Console.WriteLine("Timezone not found");
}                           
catch (InvalidTimeZoneException) {
    Console.WriteLine("Invalid Timezone");
}

这将从夏威夷标准时间转换为本地时间。

这只是一个例子。使用它根据您的需要进行转换。


0
投票

我为此编写了一个程序包。它称为Instant,它可以转换全球任何给定时区中的DateTime。详细查看https://aditya-kishore.gitbook.io/instant/

将DateTime转换为时区的基本用法非常简单:

//Assumes Instant is in your pubspec
import 'pacakges:instant/instant.dart';

//Super Simple!
DateTime myDT = DateTime.now(); //Current DateTime
DateTime EastCoast = dateTimeToZone(zone: "EST", datetime: myDT); //DateTime in EST zone
return EastCoast;

这与一行代码和最小的麻烦。

© www.soinside.com 2019 - 2024. All rights reserved.