none
如何將兩個日期相減後得到的是日期格式? RRS feed

  • 問題

  • 例如:

    年= DateDiff("yyyy", "1999/06/01", "2011/09/11")   --->得到的是 12

    月=CLng(DateDiff("m", "1999/06/01", "2011/09/11")) Mod 12   --->得到的是3

    日=DateDiff("d", "1999/06/01", "2011/09/11") --->得到的是 4423

    我想要的結果是 12年3月10日

    所以 "日" 這個數值要怎麼去運算 才會等於10呢?

    2011年7月11日 上午 07:42

解答

所有回覆

    • 已提議為解答 阿尼 2011年7月11日 上午 08:05
    • 已標示為解答 2011年7月11日 上午 08:21
    2011年7月11日 上午 07:51
    版主

  • 12年3月10日

        Dim datTim1 = New DateTime(1999, 6, 1)
        Dim datTim2 = New DateTime(2011, 9, 11)
        Dim y = DateDiff(DateInterval.Year, datTim1, datTim2)
        Dim m = DateDiff(DateInterval.Month, datTim1.AddYears(y), datTim2)
        Dim d = DateDiff(DateInterval.Day, datTim1.AddYears(y).AddMonths(m), datTim2)
        MessageBox.Show(String.Format("{0}年{1}月{2}日", y, m, d))
    

     


    歡迎參觀我的Blog.NET菜鳥自救會
    • 已標示為解答 2011年7月13日 上午 02:50
    2011年7月11日 上午 08:25
    版主
  • VB6 還是 VBNET ?

    VB6 直接是日期,VBNET 用 Ticks 處理。

    VB6:

    ? Format(#2011/09/11# - #1999/06/01#, "yy年MM月dd日")
    12年04月11日
     註:因為月及日是從 1 起算,所以各多 1 。

     

    VBNET:

    ? New Date((#09/11/2011#).Ticks - (#06/01/1999#).Ticks).ToString("yy年MM月dd日")
    "13年04月13日"

     註:因為年、月、日均是從 1 起算,但是每多個閏年多 1 日。

     

    因此這就牽扯到你計算的基準與差異。

     

     


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2011年7月11日 下午 02:37
  • VB6 還是 VBNET ?

    VB6 直接是日期,VBNET 用 Ticks 處理。

    VB6:

    ? Format(#2011/09/11# - #1999/06/01#, "yy年MM月dd日")
     12年04月11日
     註:因為月及日是從 1 起算,所以各多 1 。

     

    VBNET:

    ? New Date((#09/11/2011#).Ticks - (#06/01/1999#).Ticks).ToString("yy年MM月dd日")
    "13年04月13日"

     註:因為年、月、日均是從 1 起算,但是每多個閏年多 1 日。

     

    因此這就牽扯到你計算的基準與差異。

    我是使用 VB.NET 2010

    依照範例日期 2011/09/11 減 1999-06-01

    vb6=12年03月10日

    vb 2010=12年03月12日

    如果以手寫的來算 2011-1999=12、09-06=3、11-1=10

    正確應該是 12年03月10日 也就是 vb6 符合我要的答案

    那要如何讓 VB 2010的答案也如同VB6呢?

    2011年7月13日 上午 02:49
  • 10年最少也經過兩次的閏年 所以多出那兩天是因為閏年 新版的才是正確的吧
    2011年7月13日 上午 07:35
  • 10年最少也經過兩次的閏年 所以多出那兩天是因為閏年 新版的才是正確的吧


    不過一般在算的時候只會 09/11 減 06/01 等於 3/10

    如果是經過20年的話,閏年發生了4~5次 就變成3/15

    那使用者在看的時候 09/11 減 06/01 等於 3/15 就覺的是程式算錯了~

    2011年7月13日 上午 08:42