日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NET问答: 为什么时间格式 dd/MM/yyyy 转成 DateTime 会报错?

發布時間:2023/12/4 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NET问答: 为什么时间格式 dd/MM/yyyy 转成 DateTime 会报错? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

咨詢區

  • Shantanu Gupta

我在項目中碰到了一個需求,需要將字符串格式的 dd/MM/yyyy 轉成 DateTime,比如下面這樣:

class?Program{static?void?Main(string[]?args){var?str=?"22/11/2009";DateTime?date?=?DateTime.Parse(str);}}

但很不幸,我的代碼拋出異常了。

請問我該如何解決?不過我還意外發現 Parse 方法還有一個 IFormatProvider 參數的重載,不清楚是否它能解決?如果可以的話該怎么傳?

回答區

  • Samuel Neff

你可以使用 ParseExact 方法,它需要你指定強轉成 DateTime 需要的字符串格式,方法簽名如下:

public?static?DateTime?ParseExact(string?s,?string?format,?IFormatProvider??provider){}

所以你應該像下面這樣使用。

DateTime?date?=?DateTime.ParseExact(this.Text,?"dd/MM/yyyy",?CultureInfo.InvariantCulture);

值得一提的是,IFormatProvider 一定要適配該時間字符串格式的區域 Cluture,如果不確定的話,可以使用通用的 CultureInfo.InvariantCulture。

  • Ricardo Sanchez

其實你拋異常的本質在于,你當前 Culture 的時間格式和你的需要強轉的 字符串時間格式 是沖突的,要想解決的話,調整到正確的 Cluture 即可,參考如下代碼。

Thread.CurrentThread.CurrentCulture?=?new?CultureInfo("en-GB");?//dd/MM/yyyythis.Text="22/11/2009";DateTime?date?=?DateTime.Parse(this.Text);

或者改成這樣。

using?System.Globalization;DateTime?date?=?DateTime.Parse(this.Text,?CultureInfo.CreateSpecificCulture("en-GB"));

更多細節,參考這個鏈接:http://msdn.microsoft.com/en-us/library/5hh873ya.aspx

點評區

這個問題我其實挺感慨的,去年做新加坡的項目就被這玩意坑過,我們中國的時間格式大多是:yyyy/MM/dd ,新加坡的格式是這樣的:Fri 30 Oct 22 2009,對,你沒有看錯,居然還有英文字母縮寫,這兩格式之間倒來倒去,絕對讓你防不勝防 ????????????

總結

以上是生活随笔為你收集整理的NET问答: 为什么时间格式 dd/MM/yyyy 转成 DateTime 会报错?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。