c# - 将英国格式的字符串 DateTime ("dd/MM/yyyy") 转换为文化可能发生变化的有效 DateTime
问题描述
我的应用程序只接收“dd/MM/yyyy”格式的字符串,它必须将这些字符串转换为有效的日期时间,这取决于运行应用程序的机器的文化(美国、英国等)。如果我的应用程序在美国文化机器上运行,则使用 TryParseExact 方法从字符串到有效日期时间的转换失败,因为它正在接收英国格式字符串并尝试解析为美国字符串。
如何将英国格式“dd/MM/yyyy”的字符串解析为有效的日期时间,该日期时间的格式取决于文化信息。例如,“MM/dd/yyyy 如果它在美国机器上?我遇到的麻烦比我想象的要多。谢谢
var culture = CultureInfo.CurrentCulture;
string format = culture.DateTimeFormat.ShortDatePattern;
DateTime RequestFrom;
DateTime RequestTo;
DateTime.TryParseExact("01/12/2019", format, culture, DateTimeStyles.None, out RequestFrom);
DateTime.TryParseExact("19/12/2019", format, culture, DateTimeStyles.None, out RequestTo);
解决方案
方法 1 - 您可以ParseExact
通过给出输入格式来使用
string inputdate = "01/12/2019";
var date = DateTime.ParseExact(inputdate, "dd/MM/yyyy", CultureInfo.InvariantCulture);
方法 2 - 如果您有多种输入格式,您可以使用TryParseExact
string inputdate = "01/12/2019";
DateTime dateTime = ParseDate(inputdate )
private static DateTime ParseDate(string providedDate)
{
DateTime validDate;
string[] formats = { "dd/MM/yyyy", "dd.MM.yyyy" };
var dateFormatIsValid = DateTime.TryParseExact(
providedDate,
formats,
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out validDate);
return dateFormatIsValid ? validDate : DateTime.MinValue;
}
推荐阅读
- powershell - Powershell 找不到类型 [Microsoft.Office.Interop.Word.WdSaveFormat]
- python-3.x - 在 Python 中使用 Stanford Tregex 处理德语文本
- javascript - 使用 JavaScript 搜索大量键值对的最快方法是什么?
- java - 如何向超过 2 天未进入应用程序的用户发送推送通知?
- postgresql - 识别并命名特定数据输入点的时间戳
- bash - 将 bash 命令放在 git commit 消息中是否安全?
- bash - 如何在同一行中一个接一个地添加字符串而不是新行?
- sql - 我如何让这个过程更快?
- javascript - AngularJS模板组件不呈现变量
- javascript - js数学函数返回nan