13

C# 3.0 では、2010 年 1 月 1 日からの秒数を取得するにはどうすればよいですか?

4

6 に答える 6

28

次のようになります。

  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());
于 2010-04-16T20:02:51.413 に答える
16

2 つの DateTime インスタンスを減算して TimeSpan を取得できます。

DateTime date = new DateTime(2010,1,1);
TimeSpan diff = DateTime.Now - date;
double seconds = diff.TotalSeconds;
于 2010-04-16T20:02:21.553 に答える
2

実際には、誰の 2010-Jan-01 を使用しているか、および夏時間を考慮するかどうかが問題です。

//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プロパティを使用します。

于 2010-04-16T20:43:10.600 に答える
2

タイムゾーンの問題を避けるためだけに

 TimeSpan t = (DateTime.UtcNow - new DateTime(2010, 1, 1));

 int timestamp  = (int) t.TotalSeconds;

 Console.WriteLine (timestamp);
于 2010-04-16T20:05:25.647 に答える
1
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;
}
于 2010-04-16T20:06:01.570 に答える
0
DateTime t1 = DateTime.Now;
DateTime p = new DateTime(2010, 1, 1);

TimeSpan d = t1 - p;

long s = (long)d.TotalSeconds;
MessageBox.Show(s.ToString());
于 2010-04-16T20:06:30.437 に答える