Realbasic日期與雙精準數(VB6日期)的互換函數
Private Const cntBaseDate = "1899-12-30 00:00:00"
Function DatetoDbl(tmpDate as Date) As Double
dim tmpResult as double
dim tmpDateValue as integer
dim tmpTimeValue as double
dim tmpBaseDate as new date
tmpBaseDate.SQLDateTime=cntBaseDate
tmptimevalue=((tmpdate.Hour *60*60)+(tmpdate.Minute *60)+tmpdate.Second)/86400
tmpdatevalue=(tmpdate.TotalSeconds -tmpBaseDate.TotalSeconds ) / 86400
if tmpdatevalue <0 then
tmpresult= -1
else
tmpresult= tmpdatevalue +tmpTimeValue
end if
return tmpResult
End Function
Function DbltoDate(tmpDouble as Double) As Date
dim tmpResult as new Date
dim tmpDayValue as Int64 '不可以使用Integer, 會出現溢位的計算錯誤
dim tmpTimeValue as double
dim tmpBaseDate as new date
dim tmpTotalSeconds as integer
tmpBaseDate.SQLDateTime=cntBaseDate
tmpresult=tmpBaseDate
tmpdayvalue=tmpdouble / 1
tmpTimeValue=tmpDouble -tmpDayValue
tmpTotalSeconds=round(tmpTimeValue * 86400)
tmpResult.TotalSeconds=tmpResult.TotalSeconds+ (86400*tmpDayValue)+ tmpTotalSeconds
return tmpResult
End Function
Function SQLDateTimetoDbl(tmpDateTime as string) As double
dim tmpResult as double
dim tmpSQLDateTime as string
dim tmpYear as string
dim tmpMonth as string
dim tmpDay as string
dim tmpTime as string
dim d as new date
if len(tmpdatetime) =17 then
tmpyear=left(str(d.year),2)+left(tmpdatetime,2)
tmpmonth=mid(tmpDateTime,4,2)
tmpday=mid(tmpdatetime,7,2)
tmpTime=right(tmpdatetime,8)
tmpSQLDateTime=tmpyear +"-"+tmpmonth +"-" +tmpday +" " + tmptime
d.SQLDateTime=tmpsqldatetime
tmpResult=datetodbl(d)
else
d=new date
tmpresult=datetodbl(d)
end if
return tmpresult
End Function