none
VB6 日期加減運算問題 RRS feed

  • 問題

  •  

    在 vb6 如何簡單的寫日期加減算法?

     

    代入

    a=24/06/2008 01:15

    b=25/06/2008 02:15

    output = b - a

    output = 1500 分鐘

     

    謝謝!!

    2008年6月23日 下午 04:54

解答

  •  

    VBA.DateDiff
    2008年6月23日 下午 05:21
  • 上一篇 netjacky大已經有提到了,在VB6的時候,如果在同一行要宣告三個整數要像下面這樣

    Code Snippet
    Dim A as integer,B as integer,C as integer

     

     

    如果是用下面這樣

    Code Snippet
    Dim A,B,C as integer

     

     

    那麼只有C是Integer,A、B是Variant型態的變數;而以你的例子來說,因為隱含轉換的關係,所以Dim a, b, c As Long的方式才沒有方生錯誤。

    2008年6月24日 上午 09:25
    版主

所有回覆

  •  

    VBA.DateDiff
    2008年6月23日 下午 05:21
  • 為什麼會不一樣的結果?

     

    "型態不符"

    Private Sub Command1_Click()

    Dim a, b As Long

    a = 24/06/2008 01:15

    b = 25/06/2008 02:15

    Text1.Text = DateDiff( "n" , a , b )

    End Sub

     

    "型態不符"

    Private Sub Command1_Click()

    Dim a As Long

    Dim b As Long

    a = 24/06/2008 01:15

    b = 25/06/2008 02:15

    Text1.Text = DateDiff( "n" , a , b )

    End Sub

     

    "正常"

    Private Sub Command1_Click()

    Dim a, b, c As Long

    a = 24/06/2008 01:15

    b = 25/06/2008 02:15

    Text1.Text = DateDiff( "n" , a , b )

    End Sub

     

     

     

     Leo Tam 寫信:

     

    在 vb6 如何簡單的寫日期加減算法?

     

    代入

    a=24/06/2008 01:15

    b=25/06/2008 02:15

    output = b - a

    output = 1500 分鐘

     

    謝謝!!

2008年6月23日 下午 07:16
  • Long型別不能接受24/06/2008 01:15

    但Variable在這個值沒有用雙引號括住的情況下應該也是有錯不是?

     

    Dim a, b, c As Long

    因為 a, b 都是宣告Variable,這是.net跟vb6部份不同的地方

    2008年6月23日 下午 11:48
  •  netjacky 寫信:

    Long型別不能接受24/06/2008 01:15

    但Variable在這個值沒有用雙引號括住的情況下應該也是有錯不是?

     

    Dim a, b, c As Long

    因為 a, b 都是宣告Variable,這是.net跟vb6部份不同的地方

     

    我是打少了雙引號, 我不太明白 "Dim a, b, c As Long", "Dim a, b As Long" 有什麼分別的...反正我 c 也沒有用過.

    2008年6月23日 下午 11:56
  • 上一篇 netjacky大已經有提到了,在VB6的時候,如果在同一行要宣告三個整數要像下面這樣

    Code Snippet
    Dim A as integer,B as integer,C as integer

     

     

    如果是用下面這樣

    Code Snippet
    Dim A,B,C as integer

     

     

    那麼只有C是Integer,A、B是Variant型態的變數;而以你的例子來說,因為隱含轉換的關係,所以Dim a, b, c As Long的方式才沒有方生錯誤。

    2008年6月24日 上午 09:25
    版主
  • 既然是日期型態,為什麼不就明確地使用日期型態變數呢?

    Dim A As Date, B As Date
    A = CDate("24/06/2008 01:15")
    B = CDate("25/06/2008 02:15")
    Print DateDiff("n", A, B)

    2008年6月24日 上午 09:38
  •  Jones Jones 寫信:

    既然是日期型態,為什麼不就明確地使用日期型態變數呢?

    Dim A As Date, B As Date
    A = CDate("24/06/2008 01:15")
    B = CDate("25/06/2008 02:15")
    Print DateDiff("n", A, B)

     

    因為有一個網頁說 a b 為 long, 所以我照辦了

     

    謝謝

    2008年6月24日 上午 09:54
  • 那題目可能為 VBNET 非 VB6

    VB6 用 Variant Date ,實值型別為 Double

    VBNET 用 Tick Date ,實值型別為 Long

     

    所以請你把完整題目貼出來,由網友協助你判斷。

    2008年6月24日 下午 02:06
    版主
  •  璉璉 寫信:

    那題目可能為 VBNET 非 VB6

    VB6 用 Variant Date ,實值型別為 Double

    VBNET 用 Tick Date ,實值型別為 Long

     

    所以請你把完整題目貼出來,由網友協助你判斷。

     

    我的目的就是要寫每一個員工工作時間的統計, 例如早九至午五就是8小時, 每天工作, 就是要每天計時間差, 然後再加起來, 分分秒秒都要算, 所以我要用日期時間相減再加每一天的日期時間相減...就是如此了.

    2008年6月24日 下午 02:37
  • 你的題目不是有說 a, b 為 long ?

    我怎麼沒看到這段?

    如果是 VB6 實值型別為 Double ,小數點以上單位為天。

    例如:

    startDate As Date, endDate As Date

    doubleTime = endDate - startDate ' 單位為天

    所以

    hourTime = doubleTime * 24 ' 一天有 24 小時

    minuteTime = doubleTime * 24 * 60

    secondTime = doubleTime * 24 * 60 * 60

    2008年6月25日 下午 01:42
    版主