Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将英国格式的字符串DateTime(“dd/MM/yyyy”)转换为区域性可能更改的有效日期时间_C#_Datetime_Datetime Format_Cultureinfo_Tryparse - Fatal编程技术网

C# 将英国格式的字符串DateTime(“dd/MM/yyyy”)转换为区域性可能更改的有效日期时间

C# 将英国格式的字符串DateTime(“dd/MM/yyyy”)转换为区域性可能更改的有效日期时间,c#,datetime,datetime-format,cultureinfo,tryparse,C#,Datetime,Datetime Format,Cultureinfo,Tryparse,我的应用程序只接收“dd/MM/yyyy”格式的字符串,它必须将这些字符串转换为有效的日期时间,这取决于运行应用程序的机器的区域性(美国、英国等)。如果我的应用程序在美国区域性计算机上运行,则使用TryParseExact方法从字符串到有效日期时间的转换将失败,因为它正在接收UK格式字符串并尝试解析为美国字符串 如何将英国格式为“dd/MM/yyyy”的字符串解析为有效的日期时间,该日期时间的格式取决于区域性信息。例如,如果是在美国机器上,则为“MM/dd/yyyy?我遇到的问题比我想象的要多。

我的应用程序只接收“dd/MM/yyyy”格式的字符串,它必须将这些字符串转换为有效的日期时间,这取决于运行应用程序的机器的区域性(美国、英国等)。如果我的应用程序在美国区域性计算机上运行,则使用TryParseExact方法从字符串到有效日期时间的转换将失败,因为它正在接收UK格式字符串并尝试解析为美国字符串

如何将英国格式为“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;
}

方法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;
}

format
设置为UK格式,而不是当前区域性的格式。如果字符串始终为“dd/MM/yyyy”格式,则这是您要用于分析字符串的格式。将
format
设置为UK格式,而不是当前区域性的格式。如果字符串始终为“dd/MM/yyyy”格式“格式-然后这就是您要用于解析字符串的格式。如果这是在美国计算机上,则由于英国格式和美国格式,解析似乎失败culture@Zeus7您是说在美国机器上,您的输入字符串实际上是“MM/dd/yyyy”格式的吗?您的问题指出输入字符串始终为“dd/MM/yyyy”。你确定问题不在于解析日期后如何显示日期吗?抱歉,我这里错了,测试数据中的字符串是2019年11月31日,这无论如何都是无效的日期!如果这是在美国机器上,由于英国格式和美国格式,解析似乎会失败culture@Zeus7您是说在美国机器上,您的输入字符串实际上是“MM/dd/yyyy”格式的吗?您的问题指出输入字符串始终为“dd/MM/yyyy”。你确定问题不在于解析日期后如何显示日期吗?抱歉,我这里错了,测试数据中的字符串是2019年11月31日,这无论如何都是无效的日期!