弄清楚MSDate过去2年

时间:2013-08-29 23:10:17

标签: c#

我有一个类似41512的MSDate 我想从那天起找出过去2年。 现在我在C#,41512日期是一个字符串。

2 个答案:

答案 0 :(得分:4)

msDate是自1900-01-00以来的天数,因此您可以通过new DateTime(1900,01,01)并添加msDate然后取2(1代表00-00代替00-01来计算它)和1,因为你不计算目标日本身)。更简单的是,FromOADate功能可以为您解决这个问题。 然后,您可以减去两年来获得新日期。 您可以选择使用ToOADate函数将此日期转换回整数。

int msDate = 41512;
//DateTime d = (new DateTime(1900, 01, 01)).AddDays(msDate - 2).AddYears(-2);
DateTime d = DateTime.FromOADate(msDate).AddYears(-2);
msDate = int.Parse(d.ToOADate().ToString());

答案 1 :(得分:0)

您的“MSDate”是特定时代以来的天数(时间是日历上的零点)吗?如果是这样,你可以这样做:

public DateTime MsDateToDateTime( string msDate )
{
  int daysSinceEpoch ;
  bool parsed = int.TryParse( msDate , out daySinceEpoch ) ;
  if ( !parsed ) throw new ArgumentException("msDate") ;

  Datetime value = epoch.AddDays( daysSinceEpoch ) ;
  return value ;
}

// our epoch is 1 January 1900 00:00:00
private static readonly DateTime epoch = new DateTime(1900,1,1) ;

一旦它是DateTime,您可以随意操纵它。您可以阅读DateTime.AddYears()方法。

走另一条路:

public string DateTimeToMsDate( DateTime dt )
{
   return ((int) (dt-epoch).TotalDays ).ToString() ;
}