none
系統無法識別西元閏年 RRS feed

  • 問題

  • 我用 IsDate()來判斷輸入的日期是否為正確的日期

    以下是該段範例

    If IsDate(輸入日期) = False Then
                MsgBox("不是日期!!!")
            Else
                MsgBox("是日期!!!")
            End If

    只要我輸入 "2016/02/29" 就會被認為是錯誤的日期
    但 輸入 "105/02/29" 又是正確判斷

    因電腦時間格式 是設定中華民國曆
    想說會不會是系統格式問題

    所以我又試了

    2016/02/28  ->  是日期
    2016/02/30  ->不是日期
     105/02/28  ->  是日期
     105/02/30  ->不是日期

    但以上都可以做出正確判斷

    請問這問題是什麼原因造成的?? 

    ---------------
    補充:
    日期轉換的部分我也嘗試過了

    但只要我是輸入 2016/02/29
    就會出錯:字串未被辨認為有效的 DateTime。

    輸入 105/02/29 可以轉成 2016/02/29
    但  2016/02/29 卻不可以轉成 105/02/29

    我是想知道為什麼會 2016/02/29 字串未被辨認為有效的 DateTime

    • 已編輯 Shallin RD 2016年7月22日 上午 05:48
    2016年7月22日 上午 01:34

解答

所有回覆

  • 日期轉換的問題可以搭配CultureInfo參數, 或是用ParseExact搭配指定的格式, 就不會有您提出的問題了, 請參考:

    Convert String to DateTime

    2016年7月22日 上午 01:54
  • 請愛用 DateTime.TryParse(), DateTime.TryParseExact()

    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    2016年7月22日 上午 03:53
    版主
  • 日期轉換的部分我有爬過文

    Dim oDate As DateTime = Convert.ToDateTime("2016/02/29")

    但是在一開始的時候便出錯了:字串未被辨認為有效的 DateTime。


    2016年7月22日 上午 05:42
  • 請加入CultureInfo參數或用DateTime.ParseExact函式處理
    2016年7月23日 上午 06:11