找出过去2年的MSDate

本文关键字:MSDate 2年 过去 | 更新日期: 2023-09-27 18:29:30

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

找出过去2年的MSDate

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

您的"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() ;
}