Foxtable(狐表)用户栏目专家坐堂 → 日期列中的空日期到底是什麼?


  共有3361人关注过本帖树形打印复制链接

主题:日期列中的空日期到底是什麼?

帅哥哟,离线,有人找我吗?
jaegea
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:480 积分:3832 威望:0 精华:0 注册:2011/5/31 15:45:00
日期列中的空日期到底是什麼?  发帖心情 Post By:2014/5/18 17:43:00 [只看该作者]

0001-01-02 15:00:00
1900-01-01 22:00:00

 

輸入的時候只輸入時間時,默認的日期是1900-01-01,但進行日期計算時卻有時是1900-01-01,有時又是以0001-01-01進行計算,這是怎麼回事?


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/5/18 17:47:00 [只看该作者]

等价的,日期是从1900开始计算的。

 

你要根据情况变通处理。


 回到顶部
帅哥哟,离线,有人找我吗?
jaegea
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:480 积分:3832 威望:0 精华:0 注册:2011/5/31 15:45:00
  发帖心情 Post By:2014/5/18 17:48:00 [只看该作者]

分別有兩組時間為時間A1,時間A2,時間B1,時間B2

DataColChanged設置以下代碼,得到的時間都不對

Select Case e.DataCol.Name
    Case "時間A1","時間A2"

        SystemReady = False
        If e.DataRow(e.DataCol.Name) < e.DataRow("時間B" & e.DataCol.Name.SubString(e.DataCol.Name.Length-1)) Then
            e.DataRow(e.DataCol.Name) = e.DataRow(e.DataCol.Name).AddDays(1)
        Else
            If e.DataRow(e.DataCol.Name).Day > 1 Then
                e.DataRow(e.DataCol.Name) = e.DataRow(e.DataCol.Name).AddDays(1-e.DataRow(e.DataCol.Name).Day)
            End If
        End If
        SystemReady = True
End Select


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/5/18 17:51:00 [只看该作者]

把项目发上来,你列设置有错,或者数据有错。

 回到顶部
帅哥哟,离线,有人找我吗?
jaegea
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:480 积分:3832 威望:0 精华:0 注册:2011/5/31 15:45:00
  发帖心情 Post By:2014/5/18 17:59:00 [只看该作者]

我需要得到的結果是根據兩個時間組的時間變動進行時間差的計算結果,另外就是不需要日期顯示的

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.foxdb

[此贴子已经被作者于2014-5-18 18:01:03编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/5/18 18:19:00 [只看该作者]

 看不懂你的代码,是不是这个意思?

 

Select Case e.DataCol.Name
    Case "時間A1","時間A2"
        SystemReady = False
        Dim sp As TimeSpan
        If e.DataRow("時間A1") > e.DataRow("時間A2") Then
            sp = e.DataRow("時間A1") - e.DataRow("時間A2")
        Else
            sp = e.DataRow("時間A2") - e.DataRow("時間A1")
        End If
        e.DataRow("時間A時間差") = sp.TotalMinutes
        SystemReady = True
End Select


 回到顶部
帅哥哟,离线,有人找我吗?
jaegea
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:480 积分:3832 威望:0 精华:0 注册:2011/5/31 15:45:00
  发帖心情 Post By:2014/5/19 8:20:00 [只看该作者]

不對,是要判斷兩個時間,如果時間2大於時間1,則為當天時間,如果時間2小於時間1,則為第二天時間,所以時間二的日期要加1天,然後計算兩個時間的時間差,時間2永遠都是大於時間1的

 

Select Case e.DataCol.Name
    Case "時間A1","時間A2"
        SystemReady = False
        Dim sp As TimeSpan
        If e.DataRow("時間A2") >= e.DataRow("時間A1") Then
            sp = e.DataRow("時間A2") - e.DataRow("時間A1") 
        Else
            sp = e.DataRow("時間A2").AddDays(1)  - e.DataRow("時間A1")
        End If
        e.DataRow("時間A時間差") = sp.TotalMinutes
        SystemReady = True
End Select

 

要的是這樣的效果,但是計算出來的結果就是不對

[此贴子已经被作者于2014-5-19 8:24:38编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/5/19 8:36:00 [只看该作者]

7楼代码有什么问题?测试没问题啊.180分钟不是正确的结果吗?

 回到顶部
帅哥哟,离线,有人找我吗?
jaegea
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:480 积分:3832 威望:0 精华:0 注册:2011/5/31 15:45:00
  发帖心情 Post By:2014/5/19 8:39:00 [只看该作者]

如果列按日期時間格式去計算就沒錯,但是將列設置成時間空日期的,然後再去計算就會出現

0001-01-02 15:00:00
1900-01-01 22:00:00

 

這兩種情況參與計算,結果就錯了


 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/5/19 8:42:00 [只看该作者]

不要这样做不就好了.

 回到顶部
总数 17 1 2 下一页