假设你有这种格式的字符串。
1月11日,“111” 11月1日,“1101” 10月13日,“1013” 等所以基本上所有你想解析它并存储在两个变量的日期和月份。
我不需要解析代码,我可以很容易地做到这一点。 我只是想知道是否有人知道如何使用类似的东西来做到这一点 DateTime.TryParse()或类似的东西。
干杯
答案 0 :(得分:5)
使用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());
答案 1 :(得分:1)
您应该可以使用ParseExact或TryParseExact。
来实现这一目标我认为你的例子不会起作用,它拒绝在1月11日解析111,将其视为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
}