如何获得带有时区信息的日期时间(GMT / UTC +7)?
让我们在实时中说06:00 PM
,然后有人将本地PC时间改为01:00 PM
。如何获取日期时间06:00 PM
?
我试过这个:
System.Globalization.CultureInfo.CurrentCulture.ClearCachedData();
DateTime utcTime = DateTime.UtcNow;
TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("SE Asia Standard Time");
DateTime localTime = TimeZoneInfo.ConvertTimeFromUtc(utcTime, tzi);
Console.WriteLine(localTime);
但我仍然有01:00 PM
。
答案 0 :(得分:3)
只需联系NTP服务器并花点时间。 Code found on stackoverflow。你当然需要互联网连接。
editUserAge(age) {
this.setState((prevState) => {
let newUser = Object.assign({}, prevState.user, {age: age});
return { user: newUser };
});
}
答案 1 :(得分:1)
如果您根本不想信任用户电脑上的信息,则需要:
您可以使用Noda Time获得第一个,使用我的NodaTime.NetworkClock
插件获得第二个。在内部,它使用与Martin's answer给出的类似的NTP代码。
public static DateTime GetRealTimeInZone(string timeZoneId)
{
var clock = NetworkClock.Instance;
var now = clock.GetCurrentInstant();
var tz = DateTimeZoneProviders.Tzdb[timeZoneId];
return now.InZone(tz).ToDateTimeUnspecified();
}
用法:
DateTime dt = GetRealTimeInZone("Asia/Bangkok");
或者,如果您确实信任本地时区设置,而不是时钟,那么:
public static DateTime GetRealTimeInZone()
{
var clock = NetworkClock.Instance;
var now = clock.GetCurrentInstant();
var tz = DateTimeZoneProviders.Tzdb.GetSystemDefault();
return now.InZone(tz).ToDateTimeUnspecified();
}
用法:
DateTime dt = GetRealTimeInZone();