Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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_C#_String_Winforms_Date_Datetime - Fatal编程技术网

C# 胜利。表单-将字符串转换为DateTime

C# 胜利。表单-将字符串转换为DateTime,c#,string,winforms,date,datetime,C#,String,Winforms,Date,Datetime,我有多个字符串输入,如下所示:- 2017年9月5日 2017年9月5日下午13:56 2017年9月5日下午1:56 2017年9月5日13:56:00 2017年9月5日01:56:00下午 现在,我如何将上述示例转换为DateTime格式(dd/MM/yyyy hh:MM:ss tt) 我已经试过了 ParseExact-当用户将2017年9月5日作为值时,它会给出错误(因为格式不匹配) DateTime.ParseExact(ValueByuser,“dd/MM/yyyy HH:MM:s

我有多个字符串输入,如下所示:-

  • 2017年9月5日
  • 2017年9月5日下午13:56
  • 2017年9月5日下午1:56
  • 2017年9月5日13:56:00
  • 2017年9月5日01:56:00下午
  • 现在,我如何将上述示例转换为DateTime格式(dd/MM/yyyy hh:MM:ss tt)

    我已经试过了
  • ParseExact-当用户将2017年9月5日作为值时,它会给出错误(因为格式不匹配)

    DateTime.ParseExact(ValueByuser,“dd/MM/yyyy HH:MM:ss tt”,null)

  • TryParse-它的问题在于它使用计算机的本地格式,就像计算机已设置为“MM/dd/yyyy”一样,然后以相同的格式生成输出

    DateTime.TryParse(DatePass,out-Dtp)


  • 您可以使用接受格式数组的
    ParseExact
    TryParseExact
    重载,并传递希望支持的所有格式。例如

    var formats = new[]
    {
        "dd/MM/yyyy",
        "dd/MM/yyyy HH:mm",
        "dd/MM/yyyy HH:mm tt",
        "dd/MM/yyyy HH:mm:ss",
        "dd/MM/yyyy HH:mm:ss tt",
    };
    
    您还应指定
    CultureInfo.InvariantCulture
    作为格式提供程序,例如:

    var d = DateTime.ParseExact(s, 
      formats, CultureInfo.InvariantCulture, DateTimeStyles.None);
    

    我相信以上内容将与您的所有示例输入匹配,但第二个(
    2017年9月05日13:56 PM
    )除外,我假设它是一个打字错误,应该是
    2017年9月05日13:56
    ,不带am/PM指示器。

    您可以使用接受格式数组的
    parseeExact
    重载,并传递您想要支持的所有格式。例如

    var formats = new[]
    {
        "dd/MM/yyyy",
        "dd/MM/yyyy HH:mm",
        "dd/MM/yyyy HH:mm tt",
        "dd/MM/yyyy HH:mm:ss",
        "dd/MM/yyyy HH:mm:ss tt",
    };
    
    您还应指定
    CultureInfo.InvariantCulture
    作为格式提供程序,例如:

    var d = DateTime.ParseExact(s, 
      formats, CultureInfo.InvariantCulture, DateTimeStyles.None);
    

    我相信上述内容将与您的所有样本输入相匹配,但第二个(
    2017年9月05日13:56下午
    )除外,我认为这是一个打字错误,应该是
    2017年9月05日13:56
    ,没有am/PM指示器。

    您可以执行以下操作:

    string dd = "05 / 09 / 2017 13:56:00";
    string newdate = dd.Replace("/", "-");
    DateTime DT = DateTime.Parse(newdate);
    

    您可以执行以下操作:

    string dd = "05 / 09 / 2017 13:56:00";
    string newdate = dd.Replace("/", "-");
    DateTime DT = DateTime.Parse(newdate);
    

    同意。由于输入格式与任何语言环境都不匹配(它使用24小时时钟和am/pm指示器,世界上没有人使用!),因此唯一的解决方案是分别明确列出所有支持的格式。同意。由于输入格式与任何语言环境都不匹配(它使用24小时时钟和am/pm指示器,世界上没有人使用!),因此唯一的解决方案是分别明确列出所有受支持的格式。世界上谁使用24小时时钟和am/pm指示器?世界上谁使用24小时时钟和am/pm指示器?