咨询区

  • 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 会报错?相关推荐

  1. .NET(C#)时间日期字符串(String)格式化转换成Datetime异常报错问题

    .NET(C#)时间日期字符串(String)格式化转换成Datetime异常报错问题 参考文章: (1).NET(C#)时间日期字符串(String)格式化转换成Datetime异常报错问题 (2) ...

  2. EXCEL日期快捷键Ctrl+;格式修改(DD/MM/YYYY)

    EXCEL日期快捷键格式DD/MM/YYYY excel日期输入的快捷键是Ctrl+; 以前快捷键输入后日期格式是yyyy/mm/dd,最近快捷键输入日期格式变成了dd/mm/yyyy.想改回Ctrl ...

  3. 哪位有方法把 dd/mm/yyyy的字符串 格式化成yyyy-mm-dd

    哪位有方法把  dd/mm/yyyy的字符串 格式化成yyyy-mm-dd [总监]Dawood(656317124)  10:00:42 啊,找到方法了. procedure TForm1.Butt ...

  4. SAP MM 物料库存转固定资产,报错:You cannot post to asset in company code 1900 fiscal year 2021

    SAP MM 物料库存转固定资产,报错:You cannot post to asset in company code 1900 fiscal year 2021 使用事务代码MIGO,移动类型24 ...

  5. SAP MM在ML81N事务代码界面报错- Customizing incorrectly maintained –之对策

    SAP MM在ML81N事务代码界面报错- Customizing incorrectly maintained –之对策 笔者在很多项目的SAP系统里都遇到这个信息,在ML81N为服务采购订单创建s ...

  6. SAP MM VL09试图取消收货报错说某个HU负库存

    SAP MM VL09试图取消收货报错说某个HU负库存 内向交货单2501949770, 有启用了HUM,如上图. VL32N做收货过账, 过账后系统自动生成上架TO单,将其中的部分TO单据确认,其它 ...

  7. SAP MM 公司间STO发货单输出报错 - 合并工厂AUC1和存储位置6002没有货物收货地点 - 之对策

    SAP MM 公司间STO发货单输出报错 - 合并工厂AUC1和存储位置6002没有货物收货地点 - 之对策 昨天收到客户业务部门报错,说是业务对交货单0080022298做POD失败.相关交货单的输 ...

  8. SAP MM VL02N试图做PGI,报错-存储地点不是为交货项目000010确定的-

    SAP MM VL02N试图做PGI,报错-存储地点不是为交货项目000010确定的- 用户执行事务代码VL02N, 试图为某个交货单执行Post goods issue, 系统报错: 去检查该交货单 ...

  9. dd/MM/yyyy:HH:mm:ss +0800时间格式的转换

    SimpleDateFormat sdf1 = new SimpleDateFormat("dd/MMM/yyyy:hh:mm:ss Z", Locale.US); Date da ...

最新文章

  1. 删除电脑里的空文件夹
  2. docker 厂商 容器_中国容器厂商综合实力排名,新鲜出炉!
  3. 来一场说聊就聊的压测分享
  4. Mqtt ----心跳机制
  5. Python的pyroute2网络模块
  6. python装饰器作用-python装饰器有什么用
  7. UA MATH563 概率论的数学基础 鞅论初步8 鞅收敛定理
  8. C语言makefile文件详解,makefile讲解
  9. 一个可编辑与新增博客园文章的 Python 脚本
  10. SQL Server命令行
  11. JSP自定义标签_属性接收复杂类型处理方式
  12. Linux网络下载管理工具(lftp, ftp, lftpget, wget)
  13. ArcGIS 对起伏度、坡度和道路等及进行重分类处理
  14. ARM汇编程序——加法
  15. linux桌面壁纸目录,[多图]回顾每一款默认Ubuntu壁纸
  16. 如何让excel在两个窗口分开显示
  17. 技术管理必备之沟通机制
  18. 单片机---HLK-W801移植Nes模拟器(三)
  19. UL 2271-2018 标准轻型电动车用锂电池 最新发行中文、英文版,ANSI/CAN/ULC/UL 2271-2018
  20. 大数据 排错日记0004——Unable to check if JNs are ready for formatting

热门文章

  1. ExtJs学习笔记(21)-使用XTemplate结合WCF显示数据
  2. c语言中二叉树中总结点,C语言二叉树的三种遍历方式的实现及原理
  3. Comet OJ - Contest #0题解
  4. Ubuntu下Authentication token manipulation error或者Authentication Failure解决办法
  5. 【概率论】1-2:计数方法(Counting Methods)
  6. MyEclipse小问题与汉字处理
  7. Spring中神奇@aotuWrited
  8. vsftpd服务的搭建
  9. 使用组策略推送exchange自签名证书
  10. some demos