Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 计算过去两年的MSDate_C# - Fatal编程技术网

C# 计算过去两年的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 (

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

您的“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”是从某个特定纪元开始的天数计数吗(纪元是日历上的零点)?如果是这样,您可以这样做:

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天。一份清晰的问题陈述和代码示例,展示您迄今为止的工作,有助于我们帮助您。