簡體   English   中英

DateTime.TryParseExact C#有效格式和解析

[英]DateTime.TryParseExact C# valid format and parsing

遇到了格式化的問題。

if (!DateTime.TryParseExact(dateString, "MM/dd/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dateOn))
{
     return false;
}
else if (!DateTime.TryParseExact(timeString, "hh:mm tt", CultureInfo.InvariantCulture, DateTimeStyles.None, out timeOn))
{
     return false;
}

return SaveWorkshop(id, name, dateOn, timeOn, capacity, description, duration, isCancelled);

使用Bootstrap Datetimepicker,它確實從格式化的文本框中獲取字符串

dateString = 11/28/2015,timeString = 6:46 AM

但是在結果中我確實有假並且正在解析默認日期。 可能是什么問題呢?

對於timeString ,您需要使用h而不是hh說明符。

hh說明符需要像06這樣的單個數字的前導零 您需要使用h說明符

這就是為什么你的第二個DateTime.TryParseExact返回falsetimeOn將是它的默認值。

如果我沒弄錯的話,“......”需要兩位數的小時,而你卻沒有。 使用“h”表示非零填充值。

此外,您對時間的解析返回今天的午夜日期,從解析timeString添加了TimeSpan。

因此,要切斷今天的日期,請執行以下操作:

// snip ..
DateTime datetimeOn = dateOn.Add(timeOn.TimeOfDay);
return SaveWorkshop(id, name, datetimeOn, capacity, description, duration, isCancelled);

或者,當然,修改SaveWorkshop以在內部創建datetimeOn

編輯

此外,您可以一次解析:

DateTime datetimeOn;
DateTime.TryParseExact(dateString + timeString, "MM/dd/yyyyh:mm tt", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out datetimeOn);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM