c# - 具有不同文化的 DateTime.TryParse
问题描述
我有两个日期如下,并且我的当地文化是“en-IN”
string enInDateValue = "13-12-2021 12:00:00"; // dd/mm/yyyy
string enUSDateValue = "12-13-2021 12:00:00"; // mm/dd/yyyy
如果我使用 Invariant Culture 运行以下代码,则日期将使用 enUSDate 进行解析。
DateTime.TryParse(enInDateValue, CultureInfo.InvariantCulture, DateTimeStyles.NoCurrentDateDefault, out result)
DateTime.TryParse(enUSDateValue, CultureInfo.InvariantCulture, DateTimeStyles.NoCurrentDateDefault, out result)
要解决以下问题是我正在使用的代码,它正在解析每种文化的日期。
public static bool DateTimeTryParse(string date, out DateTime result)
{
return (
DateTime.TryParse(date, CultureInfo.InvariantCulture, DateTimeStyles.NoCurrentDateDefault, out result) ||
DateTime.TryParse(date, CultureInfo.CurrentCulture, DateTimeStyles.NoCurrentDateDefault, out result) ||
DateTime.TryParse(date, CultureInfo.CurrentUICulture, DateTimeStyles.NoCurrentDateDefault, out result)
);
}
如果它仅因不变文化而失败,它将转到当前并且对于 UI 文化相同
所以想问一下这样做是否合适?或者有没有其他办法?
解决方案
您需要明确指定预期的格式。这个小样本可能会有所帮助:
string date1 = "12-13-2021";
string date2 = "13-12-2021";
string format1 = "MM-dd-yyyy";
string format2 = "dd-MM-yyyy";
DateTime parsedDate1, parsedDate2;
bool success1 = DateTime.TryParseExact(date1, format1, null, DateTimeStyles.None, out parsedDate1);
bool success2 = DateTime.TryParseExact(date2, format2, null, DateTimeStyles.None, out parsedDate2);
if (success1)
Console.WriteLine($"First date parsed successfully: {parsedDate1.ToString("yyyy,MMM,dd,ddd")}");
else
Console.WriteLine("First date failed to parse");
if (success2)
Console.WriteLine($"Second date parsed successfully: {parsedDate2.ToString("yyyy,MMM,dd,ddd")}");
else
Console.WriteLine("Second date failed to parse");
推荐阅读
- jquery - MVC 向控制器发送多个图像
- python - 如何优化此代码??(python)
- java - 从 mipmap 到 drawable
- javascript - 使用猫鼬向现有文档添加新属性
- python - 解析从 csv 生成的请求?
- git - 检查另一个分支 x 中未提交的更改,而不检查分支 x
- android - RxJava2 concat 运算符不返回适当的流
- python-3.x - 如何检查 dlib 是否正在使用 GPU?
- javascript - 当通过脚本标签请求捆绑时,如何配置 Webpack 4 以自动导入拆分块?
- java - 带有 Ant junitlauncher 的 JUnit 5:NoClassDefFoundError:org/junit/platform/launcher/core/LauncherFactory