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

    技术2022-05-11  58

    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天后的日期值    


    最新回复(0)