【问题标题】:C# seconds since specific date自特定日期以来的 C# 秒数
【发布时间】:2011-02-08 23:47:20
【问题描述】:

在 C# 3.0 中,我如何获得自 2010 年 1 月 1 日以来的秒数?

【问题讨论】:

    标签: c# datetime date-range


    【解决方案1】:

    是这样的:

      TimeSpan test = DateTime.Now - new DateTime(2010, 01, 01);
      MessageBox.Show(test.TotalSeconds.ToString());
    

    为了一个班轮的乐趣:

     MessageBox.Show((DateTime.Now - new DateTime(2010, 01, 01))
         .TotalSeconds.ToString());
    

    【讨论】:

    • @Psytronic 那么MessageBox.Show((DateTime.Now - new DateTime(2010, 01, 01)).TotalSeconds.ToString()); 应该会得到各种选票。
    • ViewData["counter-multiplier"] = (DateTime.Now - new DateTime(2010, 01, 01)).TotalSeconds.ToString();胜利
    【解决方案2】:

    您可以减去 2 个 DateTime 实例并得到一个 TimeSpan:

    DateTime date = new DateTime(2010,1,1);
    TimeSpan diff = DateTime.Now - date;
    double seconds = diff.TotalSeconds;
    

    【讨论】:

      【解决方案3】:

      只是为了避免时区问题

       TimeSpan t = (DateTime.UtcNow - new DateTime(2010, 1, 1));
      
       int timestamp  = (int) t.TotalSeconds;
      
       Console.WriteLine (timestamp);
      

      【讨论】:

      • 假设您尚未处于 UTC/GMT 状态,这会导致时区问题。您还需要将 1/1/2010 转换为 UTC (new DateTime(2010, 1, 1).ToUniversalTime())。您可能需要担心夏令时的更大问题。
      【解决方案4】:

      这实际上取决于您使用的是谁的 2010 年 1 月 1 日,以及您是否希望考虑夏令时。

      //I'm currently in Central Daylight Time (Houston, Texas)
      DateTime jan1 = new DateTime(2010, 1, 1);
      
      //days since Jan1 + time since midnight
      TimeSpan differenceWithDaylightSavings = DateTime.Now - jan1;
      
      //one hour less than above (we "skipped" those 60 minutes about a month ago)
      TimeSpan differenceWithoutDaylightSavings = (DateTime.UtcNow - jan1.ToUniversalTime());
      
      //difference for those using UTC and 2010-Jan-01 12:00:00 AM UTC as their starting point
      //   (today it's 5 hours longer than differenceWithDaylightSavings)
      TimeSpan utcDifference = (DateTime.UtcNow - new DateTime(2010, 1, 1));
      
      与夏令时的差异:105.15:44:09.7003571 没有夏令时的差异:105.14:44:09.7003571 UTC 差异:105.20:44:09.7003571

      要获取秒数,请使用 TimeSpan 对象的 TotalSeconds 属性。

      【讨论】:

        【解决方案5】:
        protected void Page_Load(object sender, EventArgs e)
        {
            SecondsSinceNow(new DateTime(2010, 1, 1, 0, 0, 0));
        }
        
        private double SecondsSinceNow(DateTime compareDate)
        {
            System.TimeSpan timeDifference = DateTime.Now.Subtract(compareDate);
            return timeDifference.TotalSeconds;
        }
        

        【讨论】:

          【解决方案6】:
          DateTime t1 = DateTime.Now;
          DateTime p = new DateTime(2010, 1, 1);
          
          TimeSpan d = t1 - p;
          
          long s = (long)d.TotalSeconds;
          MessageBox.Show(s.ToString());
          

          【讨论】:

            猜你喜欢
            • 2021-07-03
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-05-18
            • 2016-11-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多