none
日期格式問題(語言區域不同) RRS feed

  • 問題

  • 各位大大

    剛剛那個問題小弟我找到原因了

    因為語言的不同日期的格式化的相異

    相減後照成溢位

    因為在中文的環境中使用Date.Parse("10/06/17 10:11:12")<==是2010年6月17日

    英文環境中Date.Parse("10/06/17 10:11:12")<==是2017年10月6日

    但是美國語系中的環境日期顯示方式我有看過(M-d-yy)&(yy-M-d)兩種(沒問題的某幾台在荷蘭跟美國對方不知道為何會改成yy-M-d,有問題的都使用預設值)

    總不能要求對方去改變格式

    不知道是否有方式可以強制Date.Parse強制改為FORMAT格式都是為yyyyMMdd HHmmss

    不會依照語言的不同或是使用者變更照成FORMAT格式不相同

     

    到處去爬文一直都找不到方法

    爬文有看到DateTime.ParseExact("10/06/17 10:10:10", "yyyy/MM/dd HH:mm:ss", Nothing)

    使用的時候一直出現日期格式不符合

    再次麻煩各位大大

     

    目前有測試到一種方式

    dim dt as string =string.Format("{0:F}","10/06/17 10:10:10")

    date.parse(dt .tostring("yyyy/MM/dd HH:mm:ss"))

    但是就是覺得有點麻煩

    不知道是否有更簡便的方式

    2010年6月17日 上午 08:57

解答

所有回覆

  • 你如果要用 DateTime. ParseExact 方法 (String, String, IFormatProvider)
    就必須要實作[IFormatProvider 介面 ]
    寫起來可能還會更麻煩.
    以下是簽名檔, 請勿沒事對號入座
    MSDN 文件庫很重要
    回應幫助你的人是一種禮貌, 良好的禮貌有助於激發大家對你問題回應的熱情
    進步的人會找尋自己程式中的缺點,半桶水則把自己程式的錯誤推到不相干事物的身上
    2010年6月17日 上午 10:16
    版主
  • Hi,

    試試

    Dim dt As DateTime = DateTime.ParseExact("10/06/17 10:10:10", "yyyy/MM/dd HH:mm:ss", Threading.Thread.CurrentThread.CurrentCulture)

     

    不過因為你存的資料跟當前使用的格式可能不同,你可能要先用TryParse試轉看看,不行在用ParseExact或TryParseExact

     

    若知道當初儲存的格式,可嘗試使用建立該CultureInfo並帶入

     

    另外一提,你說的第二種方法是錯的吧,ToString的參數會依型態而有所不同,你帶入的是DataTime用的,不是String用的

     


    謙卑學習,持之以恆,才能不斷的Level Up http://www.dotblogs.com.tw/larrynung/
    2010年6月17日 上午 10:54
  • 大大

    ParseExact我就是沒辦法用

    會出下下面的錯誤

    我想大大因該有測試過上面那行,我直接複製下來直接執行就是會有錯誤

    2010年6月18日 上午 12:41
  •  Dim dd As Date

     DateTime.TryParse("10/06/17 10:10:10", dd)

    這個可以使用不過轉出來的還是依照OS上的設定做轉換

    M-d-yy<==10/06/2017 xx:xx:xx

    yy-M-d<==06/17/2010 xx:xx:xx

    我那個第二種方式其實也轉不出來完全都要看OS的設定

    dim dt as string =string.Format("{0:F}","10/06/17 10:10:10")

    date.parse(dt .tostring("yyyy/MM/dd HH:mm:ss"))

    2010年6月18日 上午 01:01
  • Hi,

    格式帶錯了,改為"yy/MM/dd HH:mm:ss"試試。

     Dim dt As DateTime = DateTime.ParseExact("10/06/17 10:10:10", "yy/MM/dd HH:mm:ss", CultureInfo.InvariantCulture)

     

    另外水瓶大這篇也參考一下

    http://www.dotblogs.com.tw/chhuang/archive/2008/03/18/1921.aspx


    謙卑學習,持之以恆,才能不斷的Level Up http://www.dotblogs.com.tw/larrynung/
    • 已標示為解答 動不了 2010年6月18日 上午 02:47
    2010年6月18日 上午 02:26
  • 感謝蹂躪大大

    原來是這樣,終於解決了

    不管我現在去怎麼改變日期顯示方式

    都不會錯亂了

     

    2010年6月18日 上午 02:47