找出过去2年的MSDate
本文关键字:MSDate 2年 过去 | 更新日期: 2023-09-27 18:29:30
我有一个类似41512的MSDate我想从那一天起找出过去的两年。现在我在C#中,41512日期是一个字符串。
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() ;
}