您的位置:首页 > 编程语言 > C#

double数值与日期型之间的相互转换

2007-02-22 04:28 651 查看
double数值与日期型之间的相互转换
 
double数值与日期型之间的相互转换 
   在C#中,数值型与日期型是可以相互转的  

一、从double型到date:  DateTime.FromOADate(double型)  
   FromOADate()方法的日期零点值为1899年12月30日0点0分0秒0毫秒,顺逆推为加减一天  
   如:  
     DateTime theDate;  
     theDate = DateTime.FromOADate(0);  
       // theDate.ToString()等于“1899-12-30 0:00:00”   
     theDate = DateTime.FromOADate(2);  
       // theDate.ToString()等于“1900-1-1 0:00:00”  
     theDate = DateTime.FromOADate(-1);  
       // theDate.ToString()等于“1899-12-29 0:00:00”  

 二、从date型到double:   
     只要知道某一天到日期零点值相差的天数,就可以从date型转换为double型  
     如:2003年9月30日;  
      string strDate;  
       double i=0;  
       do{  
       i++;  
       strDate=DateTime.FromOADate(i).ToString("d");  
       }  
     while(strDate!="2003-9-30"); //这个条件和系统的语言有关,这里是XP中文版系统的设置,其它语言的系统应改为相应日期格式。  
     运算结果的 i 值就是 2003年9月30日的 double值      
       
三、用FromOADate()方法求两个日期之间相差天数:  
   求任意两个日期之间的天数差,用FromOADate()方法会变得简单而精确,不用考虑闰年和大小月问题,并且可以精确到小数点后任意位。下例精确到小数点后一位:  

   求当前日期到2104年3月1日相距的天数:  
      string strCurDate,strOthDate;   
       double i=0, j=0;  //可以不从0开始,以减少循环次数 
       do{   
          i++;   
         strCurDate=DateTime.FromOADate(i).ToString("d");   
       }   
       while(strCurDate!=DateTime.Now.ToString("d"));   

       j=i; //可以不要此句,这是为减少循环次数 
       do{   
          j++;   
         strOthDate=DateTime.FromOADate(j).ToString("d");   
       }   
       while(strOthDate!="2104-3-1");   
      string strDay=(j-i).ToString("f1") ;  

     strDay就是两日间的天数,计算结果为36677.0天 

四、同理,求当前日期N天后的日期值也很简单: 
    求:今天过100天的日期值: 
      string strCurDate;   
       double i=37000; 
       do{   
          i++;   
         strCurDate=DateTime.FromOADate(i).ToString("D");   
       }   
       while(strCurDate!=DateTime.Now.ToString("D"));   
     DateTime theDate; 
     theDate = DateTime.FromOADate(i+100); 

    theDate就是100天后的日期值    
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  date 语言 c# xp