Как получить сегодняшнюю 9:00 PST эпоху в C#
Я хочу знать, сколько секунд прошло с 1970/1/1 до сегодняшнего 9:00 по тихоокеанскому времени. Как я могу сделать это в C#?
Мне это нужно во внешнем приложении, где у каждого устройства может быть свой часовой пояс. Но в любом случае мне нужны секунды, прошедшие с часового пояса PST текущего дня.
2 ответа
TimeZoneInfo destTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");
int timeZoneDiffSeconds = (int) destTimeZone.BaseUtcOffset.Subtract(TimeZoneInfo.Local.BaseUtcOffset).TotalSeconds;
DateTime todayLocal9Am = DateTime.Today.Date + new TimeSpan(9, 0, 0);
Int32 unix9AmLocalTime = (Int32) (todayLocal9Am.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
Int32 unix9AmPstTime = unix9AmLocalTime - Math.Abs(timeZoneDiffSeconds);
Console.WriteLine(unix9AmPstTime);
Console.Read();
Если ваш сервер настроен на использование времени PST, то вы можете сделать следующее
Идет так:
TimeSpan test = DateTime.Now - new DateTime(1970, 01, 01);
MessageBox.Show(test.TotalSeconds.ToString());
Для одного лайнера:
MessageBox.Show((DateTime.Now - new DateTime(1970, 01, 01))
.TotalSeconds.ToString());
Если вы не можете гарантировать, что PST используется на компьютере, на котором будет выполняться ваш код, вы можете указать часовой пояс следующим образом.
var zone = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");
var utcNow = DateTime.UtcNow;
var pacificNow = TimeZoneInfo.ConvertTimeFromUtc(utcNow, zone);
MessageBox.Show((pacificNow - new DateTime(1970, 01, 01))
.TotalSeconds.ToString());
Надеюсь это поможет