Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/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#中的另一种日期格式?_C#_Date_Datetime Format_Date Conversion - Fatal编程技术网

如何将日期(从日期时间输入字段)转换为C#中的另一种日期格式?

如何将日期(从日期时间输入字段)转换为C#中的另一种日期格式?,c#,date,datetime-format,date-conversion,C#,Date,Datetime Format,Date Conversion,我有一个日期-时间输入字段,我从中获取日期并将其转换为另一种格式,即我的代码 try { DateTime dt = dtiFrom.Value.Date; string format = "DD-MM-YYYY"; // Use this format MessageBox.Show(dt.ToString(format)); // here its shows result as DD-10-YYYY DateTime dt1 = Convert.ToDate

我有一个日期-时间输入字段,我从中获取日期并将其转换为另一种格式,即我的代码

try
{
    DateTime dt = dtiFrom.Value.Date;
    string format = "DD-MM-YYYY"; // Use this format
    MessageBox.Show(dt.ToString(format)); // here its shows result as DD-10-YYYY
    DateTime dt1 = Convert.ToDateTime(dt.ToString(format)); // here Error "The string was not recognized as a valid DateTime. There is an unknown word starting at index 0."
}
catch (Exception ee)
{
    MessageBox.Show(ee.Message, "Error Message!");
}

我无法根据我的格式转换日期。请任何人帮我写代码或者给我推荐一些代码。提前感谢

您的格式应如下所示:

string format = "dd-MM-yyyy";
大小写对于字符串格式很重要,您可能会认为月份使用大写很奇怪,但这是因为小写的
m
mm
用于表示分钟

请注意,您的输出显示
DD
YYYY
的原因是,任何未保留为格式字符的字符都将不做任何更改地输出。大写的
D
Y
没有保留,这就是它们显示在输出中的原因,就像
-
保持不变一样

如果希望输出保留格式字符,则可以使用
\
对其进行转义


您的格式应如下所示:

string format = "dd-MM-yyyy";
大小写对于字符串格式很重要,您可能会认为月份使用大写很奇怪,但这是因为小写的
m
mm
用于表示分钟

请注意,您的输出显示
DD
YYYY
的原因是,任何未保留为格式字符的字符都将不做任何更改地输出。大写的
D
Y
没有保留,这就是它们显示在输出中的原因,就像
-
保持不变一样

如果希望输出保留格式字符,则可以使用
\
对其进行转义


应更改日期模式格式,最好使用
TryParseExact
而不是使用Convert

DateTime dt = dtiFrom.Value.Date;
string format = "dd-MM-yyyy";
DateTime dt1 = new DateTime();

if (DateTime.TryParseExact(dt , format, null , DateTimeStyles.None, out dt1))
{
  // you can use dt1 here
}
else
{
  MessageBox.Show("Error Massage");
}

应更改日期模式格式,最好使用
TryParseExact
而不是使用Convert

DateTime dt = dtiFrom.Value.Date;
string format = "dd-MM-yyyy";
DateTime dt1 = new DateTime();

if (DateTime.TryParseExact(dt , format, null , DateTimeStyles.None, out dt1))
{
  // you can use dt1 here
}
else
{
  MessageBox.Show("Error Massage");
}

另外,您应该研究如何使用System.Diagnostics.Trace记录未来的错误。它提供相同的信息,但没有使用如此丑陋的消息框。如果您想要在实时环境中使用您的产品,那么用于错误处理的messagebox就是一个糟糕的设计。用户不关心出了什么问题的具体原因。记录错误,如果可能,尝试在没有日期的情况下继续。如果不可能,您可以警告用户出了问题。另外,您应该考虑使用System.Diagnostics.Trace记录未来的错误。它提供相同的信息,但没有使用如此丑陋的消息框。如果您想要在实时环境中使用您的产品,那么用于错误处理的messagebox就是一个糟糕的设计。用户不关心出了什么问题的具体原因。记录错误,如果可能,尝试在没有日期的情况下继续。如果不可能,您可以警告用户出了问题。