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


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

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

帅哥哟,离线,有人找我吗?
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進行計算,這是怎麼回事?


 回到顶部
帅哥哟,离线,有人找我吗?
jaegea
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | 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


 回到顶部
帅哥哟,离线,有人找我吗?
jaegea
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
jaegea
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
jaegea
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | 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

 

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


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


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

汗,就是有需要這樣做的理由,所以才會碰到這樣的問題啊

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


加好友 发短信
等级:一尾狐 帖子:480 积分:3832 威望:0 精华:0 注册:2011/5/31 15:45:00
  发帖心情 Post By:2014/5/19 8:50:00 [显示全部帖子]

就是間斷這個時間2是不是第二天的時間,而這個時間2永遠都是要比時間1要大的,然後進行時間段的計算,這是考勤排班中夜班的上班時間段的判斷,而考勤排班只有時間肯定是沒有日期的,這是要應用到每一天的不可能指定一個日期的

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


加好友 发短信
等级:一尾狐 帖子:480 积分:3832 威望:0 精华:0 注册:2011/5/31 15:45:00
  发帖心情 Post By:2014/5/19 8:57:00 [显示全部帖子]

設置一個固定日期這樣也是可以的,但是本來很簡單的幾句代碼就可以搞定的,如果這樣做那不是又轉了幾個圈?如果默認空日期是同一個值不就簡單了?我是沒想過會有兩個默認空日期,所以以為哪裡出錯了。。。

 回到顶部