簡體   English   中英

從字符串DateTime解析月份和日期

[英]Parse month and date from string DateTime

假設您有這種格式的字符串。

1月11日,“ 111”,11月1日,“ 1101”,10月13日,“ 1013”等

因此,基本上所有您想解析的內容都存儲在日期和月份的兩個變量中。

我不需要解析代碼,我可以輕松地做到這一點。 我只是想知道是否有人知道使用DateTime.TryParse()之類的方法來實現此目的。

干杯

使用DateTime可能是這樣的

string value = "111";
if (value.Length < 4) value = "0" + value;
DateTime dt;
if (DateTime.TryParseExact(value, "MMdd", 
     CultureInfo.InvariantCulture, DateTimeStyles.None, out dt)) {
    int month = dt.Month;
    int day = dt.Day;
}

但老實說,最好還是手動解析字符串。 如果要將日期和月份部分包含在兩個單獨的變量中,則只是使用不需要的DateTime引入開銷(可能很小)。

int value = 111;
int month = value / 100;
int day = value % 100;

if (month > 12)
    throw new Exception("Invalid Month " + month.ToString());

if (day > DateTime.DaysInMonth(year, month))
    throw new Exception("Invalid Day " + day.ToString());

您應該能夠使用ParseExactTryParseExact做到這一點。

我認為您的示例無法正常工作,它拒絕將111解析為1月11日,而將其解析為10月1日。如果您在日期的兩個部分都堅持使用兩位數字,那應該更干凈。

DateTime parsedDate;
if (DateTime.TryParseExact("0111", "MMdd", System.Globalization.CultureInfo.CurrentCulture, System.Globalization.DateTimeStyles.None, out parsedDate))
{
    // do something with parsedDate.Month and parsedDate.Day
}

暫無
暫無

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

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