C# 计算过去两年的MSDate
我有一个类似41512的MSDate 我想知道从那个日期算起的过去两年。 现在我在C#中,41512日期是一个字符串。您的“MSDate”是从特定纪元开始的天数吗(纪元是日历上的零点)?如果是这样,您可以这样做:C# 计算过去两年的MSDate,c#,C#,我有一个类似41512的MSDate 我想知道从那个日期算起的过去两年。 现在我在C#中,41512日期是一个字符串。您的“MSDate”是从特定纪元开始的天数吗(纪元是日历上的零点)?如果是这样,您可以这样做: public DateTime MsDateToDateTime( string msDate ) { int daysSinceEpoch ; bool parsed = int.TryParse( msDate , out daySinceEpoch ) ; if (
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.AddYears()
方法
走另一条路:
public string DateTimeToMsDate( DateTime dt )
{
return ((int) (dt-epoch).TotalDays ).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.AddYears()
方法
走另一条路:
public string DateTimeToMsDate( DateTime dt )
{
return ((int) (dt-epoch).TotalDays ).ToString() ;
}
msDate是自1900-01-00以来的天数,因此您可以通过以下方式计算:取
新日期时间(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是自1900-01-00以来的天数,因此您可以通过以下方式计算:取
新日期时间(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());
转换为
int
并减去2*365
?取决于你对一年的定义……你试过什么?什么是“MSDate”?数字41512代表什么?这似乎是1900年1月1日以来的天数,8月28日是1900年1月1日以来的41512天。一个清晰的问题陈述和代码示例可以显示您迄今为止的工作,有助于我们帮助您。转换为int
并减去2*365
?取决于你对一年的定义……你试过什么?什么是“MSDate”?数字41512代表什么?这似乎是1900年1月1日以来的天数,8月28日是1900年1月1日以来的41512天。一份清晰的问题陈述和代码示例,展示您迄今为止的工作,有助于我们帮助您。