为了账号安全,请及时绑定邮箱和手机立即绑定

字符串不被识别为有效的日期时间“格式dd/mm/yyy”

字符串不被识别为有效的日期时间“格式dd/mm/yyy”

慕的地6264312 2019-06-28 17:31:56
字符串不被识别为有效的日期时间“格式dd/mm/yyy”我正在尝试用格式将我的字符串格式化值转换为日期类型。dd/MM/yyyy.this.Text="22/11/2009";DateTime date = DateTime.Parse(this.Text);有什么问题吗?它有第二个要求IFormatProvider..这是什么?做我也要通过这个吗?如果是的话,这个案子该怎么用呢?编辑.之间有什么区别?Parse和ParseExact?编辑2Slaks和Sam的两个答案都是为我工作的,目前用户正在提供输入,但我将向您保证,通过使用maskTextbox,它们是有效的。哪一个答案更好地考虑到所有方面,比如类型安全、性能或者你感觉到的东西。
查看完整描述

3 回答

?
德玛西亚99

TA贡献1770条经验 获得超3个赞

你需要打电话ParseExact,它解析的日期与您提供的格式完全匹配。

例如:

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

这个IFormatProvider参数指定用于解析日期的区域性。
除非您的字符串来自用户,否则应传递CultureInfo.InvariantCulture.
如果字符串确实来自用户,则应传递CultureInfo.CurrentCulture,它将使用用户在“控制面板”中的“区域选项”中指定的设置。


查看完整回答
反对 回复 2019-06-28
?
饮歌长啸

TA贡献1951条经验 获得超3个赞

解析日期时间的字符串表示是一件棘手的事情,因为不同的区域性有不同的日期格式。NET知道这些日期格式,并将它们从当前区域性中提取出来(System.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat)当你打电话的时候DateTime.Parse(this.Text);

例如,字符串“22/11/2009”与ShtDatePattern对于美国(en-US),但它确实与法国(fr-fr)相匹配。

现在,你要么打电话DateTime.ParseExact并传递您所期望的确切格式字符串,或者可以将适当的区域性传递给DateTime.Parse解析日期。

例如,这将正确地解析您的日期:

DateTime.Parse( "22/11/2009", CultureInfo.CreateSpecificCulture("fr-FR") );

当然,你不应该只是随便选择法国,而是适合你的需要。

你需要弄清楚的是System.Threading.Thread.CurrentThread.CurrentCulture设置为,以及它是否/为什么与您预期的不同。


查看完整回答
反对 回复 2019-06-28
  • 3 回答
  • 0 关注
  • 1158 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信