作者:听海的音_104 | 来源:互联网 | 2023-05-17 18:09
如何将一个Date型转换为Double型?
比如将现在的时间Now,转换为一个Double量
20 个解决方案
Use Convert.ToDouble(DateTime.Now.ToShortTime()) then ok
你是不是疯了?那转换过去是什么东东嘛?
cdbl(now)
DataTime now = DataTime.Now ;
string nowString = now.ToString("yyMMddHHmmss",null);
double nowDouble = Convert.ToDouble(nowString);
// the nowDouble is your want
Convert.ToDouble(DateTime.Now.ToShortTime())
DataTime now = DataTime.Now ;
string nowString = now.ToString("yyMMddHHmmssfff",null);//帶毫秒
string nowString = now.ToString("yyMMddHHmmss",null);//不帶毫秒
斑竹,你希望什么样的转换呢?
转换成Double后,是否要转回Date呢?
如果是一天24小时,一小时60秒这样算的话,直接用:
double ddate = DateTime.Now.Ticks;
如果想转回的话用:
DateTime dt = new DateTime((long)ddate);
36526.5 表示2000年1月1日12时零点零分零秒;0.5 表示1899年12月30日12时零点零分零秒。前一天加1,后一天减1。我想得到当前时间对应的Double数据。
DateTime dt = DateTime.Parse("1899年12月30日12时");
TimeSpan ts1 = new TimeSpan(dt.Ticks);
Console.WriteLine(ts1.TotalDays);
dt = DateTime.Parse("2000年1月1日12时");
TimeSpan ts2 = new TimeSpan(dt.Ticks);
Console.WriteLine(ts2.TotalDays);
Console.WriteLine(ts2.TotalDays - ts1.TotalDays);
经过计算,得出结果是36526,这正是斑竹所要的,所以斑竹可以这样得到数据:
long low = 599264784000000000L;//指时间1899年12月30日12时的Ticks(ns)数;
long now = DateTime.Now.Ticks;//当前时间的Ticks数;
TimeSpan ts1 = new TimeSpan(now - low);//时间差;
double d = ts1.TotalDays + 0.5;//求总天数;
d就是斑竹要的数据了。
Double d = Convert.ToDouble(myDate);
Double d = Convert.ToDouble(myDate) 错误,提示不能转换
在VB6中,可以直接使用Cdbl(Now),在VC中可以使用COleDateTime,
在.Net中有无简单的方法得到当前日期+时间的Double量表示
已经很简单了:
static double ToDouble(DateTime dt) {
return new TimeSpan(DateTime.Now.Ticks - 599264784000000000L).TotalDays + 0.5;
}
非常感谢夕夕公主,不过能再问一个问题吗?反过来,如何从一个Double型得到一个DateTime型呢?
static DateTime ToDateTime(double dou) {
return new DateTime(599264784000000000L).AddDays(dou - 0.5);
}
自己查一下msdn中的DataTime类型就什么都有了。
感谢xixigongzhu(夕夕公主) ,接分,不知能不能帮我回答另外一个问题
http://expert.csdn.net/Expert/topic/2365/2365465.xml?temp=.5858576