【问题标题】:c# - how to convert 26/Jun/2016 at 13:14 to 2016-01-26 13:14:00 [duplicate]c# - 如何将 26/Jun/2016 的 13:14 转换为 2016-01-26 13:14:00 [重复]
【发布时间】:2018-02-23 04:36:37
【问题描述】:

我想将 26/Jun/2016 at 13:14string 转换为 datetime 数据类型 用于保存到 sql

string DtTime = ds.Tables["VOUCHER"].Rows[0]["BASICDATETIMEOFINVOICE"].ToString();

如何拆分为字符串

【问题讨论】:

  • 所有这些关于将string 转换为DateTime 和反之亦然的问题都应合并为一个答案。没有它,仍然会有一堆重复。
  • 显示错误-@Tim Schmelter
  • @m.rogalski:也许吧,但这个答案会写满一本书,因为有很多边缘情况和格式说明符。它至少应该包含主要是thisthis 的文档。所以我怀疑如果有人搜索帮助,答案是否会很有帮助,因为DateTime.ParseExact("26/Jun/2016 at 13:14", "dd/MMM/yyyy at HH:mm", null) 不起作用

标签: c#


【解决方案1】:

需要将格式字符串中的/at转义,然后可以使用ParseExact

DateTime.ParseExact("26/Jun/2016 at 13:14", "dd/MMM/yyyy 'at' HH:mm", CultureInfo.InvariantCulture);    

https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings

但是您确定该值没有存储为DateTime?使用ds.Tables["VOUCHER"].Rows[0].Field<DateTime>("BASICDATETIMEOFINVOICE") 进行检查。然后不需要从ObjectstringDateTime 的转换。如果不是,您应该首先考虑将其存储为DateTime,无论DataTable 是从哪里填充的。

【讨论】:

  • 如何从 this.plz 中删除转义 / 和 at 帮助我
  • @fidha:我不明白你的问题
  • string[] Date = DtTime.Split(' '); string[] bal = Date[0].Split('-'); DateTime dt = DateTime.Parse(bal[0]);字符串 sty = dt.ToString("yyyy/MM/dd"); int 月 = dt.Month; string[] time = Date[2].Split(':');如何通过将所有格式合并到“2017-09-14 02:29:29”这个格式来保存到字符串
  • @fidha:你为什么不用我的方法?
  • 我觉得CultureInfo.InvariantCulture 而不是null 会更舒服(或者"Jun" 总是被识别为第6 个月?假设null 会导致回退到Current(UI)Culture),但除此之外,这是可行的。
猜你喜欢
  • 2019-07-02
  • 2017-06-11
  • 2017-11-01
  • 2021-12-09
  • 1970-01-01
  • 1970-01-01
  • 2021-06-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多