我有一个类似41512的MSDate 我想从那天起找出过去2年。 现在我在C#,41512日期是一个字符串。
答案 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() ;
}