如何在C#中获取今天上午9点(PST)的时间

时间:2018-07-11 10:56:42

标签: c# datetime epoch

我想知道从1970/1/1到今天的太平洋标准时间上午9点为止经过了多少秒。我该如何在C#中做到这一点?

我在前端应用程序中需要此功能,其中每个设备可以具有不同的时区。但是无论如何,我需要从今天上午9点(PST)时区过去几秒钟。

2 个答案:

答案 0 :(得分:0)

如果您的服务器设置为使用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());

希望这会有所帮助

答案 1 :(得分:0)

    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();