【发布时间】:2018-08-17 04:01:11
【问题描述】:
使用 ASP.NET 表单时,我遇到了将 12 小时时间转换为时间跨度的问题。下面我将 DateTime 与 TimeSpan 结合起来,因为用户选择了日期和时间。字段由javascript控制。
DateTime DateResult = DateTime.TryParse(txtDate.Text, out DateResult) ? DateResult : DateTime.Today;
TimeSpan TimeResult = TimeSpan.TryParseExact(txtTime.Text, "h:mm tt", CultureInfo.InvariantCulture, out TimeResult) ? TimeResult : new TimeSpan();
DateResult = DateResult.Add(TimeResult)
所以解析日期可以正常工作,但 Timespan 不能。一个例子:
输入日期:08/03/2018
输入时间:凌晨 3:00
值已通过正常但时间失败,因此 DateResult 变为“08/03/2018 00:00”而不是“08/03/2018 03:00”。我也尝试过使用 TimeSpan.TryParse 方法,但没有运气。
我还通过在后台手动输入数据库中的时间来确保格式正确。网格视图有一列以这种格式“dd/MM/yyyy h:mm tt”显示完整日期,并且可以正常工作。
有人请分享一些光吗?理想情况下,我希望避免使用任何第三方插件。
【问题讨论】:
-
参见 ParseExact 或 msdn.microsoft.com/en-us/library/…
-
将其解析为
DateTime并从中抽出时间。tt不是 valid TimeSpan format string。想想看。 AM/PM 不是时间跨度的一部分。这是一天中的时间的一部分。
标签: c# webforms timespan time-format