将字符串转换为日期时间

时间:2014-11-04 11:13:32

标签: c# datetime

我有一个类似字符串的日期:

09/25/2014 09:18:24

我需要这样(yyyy-mm-dd):

2014-09-25 09:18:24

此日期所涉及的对象是可以为空的日期。

试过这不起作用:

DateTime formattedDate;
bool result = DateTime.TryParseExact(modifiedDate, "yyyy-MM-dd",
               CultureInfo.InvariantCulture,
               DateTimeStyles.None,
               out formattedDate);

任何线索?

提前致谢。

3 个答案:

答案 0 :(得分:4)

来自DateTime.TryParseExact

  

将指定的日期和时间字符串表示形式转换为它   DateTime等效。 字符串表示的格式必须   完全匹配指定的格式。

在你的情况下,他们不是。请改用yyyy-MM-dd HH:mm:ss格式。

string s = "2014-09-25 09:18:24";
DateTime dt;
if(DateTime.TryParseExact(s, "yyyy-MM-dd HH:mm:ss",
                          CultureInfo.InvariantCulture,
                          DateTimeStyles.None, out dt))
{
    Console.WriteLine(dt);
}

有点不清楚但如果你的字符串是09/25/2014 09:18:24,那么你可以改用MM/dd/yyyy HH:mm:ss格式。只是一个提示,"/" custom format specifier具有特殊含义,因为将我替换为当前文化或提供的文化日期分隔符。这意味着,如果您的CurrentCulture或提供的文化DateSeparator不是/,那么如果您的格式和字符串完全匹配,那么您的解析操作将失败甚至

如果已经 DateTime,并且您想对其进行格式化,则可以使用DateTime.ToString(string) method之类的;

dt.ToString("yyyy-mm-dd", CultureInfo.InvariantCulture); // 2014-09-25

dt.ToString("yyyy-mm-dd HH:mm:ss", CultureInfo.InvariantCulture); // 2014-09-25 09:18:24

请注意,DateTime没有任何隐式格式。它只包含日期和时间值。它们的字符串表示具有格式。

答案 1 :(得分:1)

在回答您的问题时,要根据您的喜好进行转换,请按以下方式进行:

string originalDate = "09/25/2014 09:18:24";

DateTime formattedDate;

if (DateTime.TryParseExact(originalDate, "MM/dd/yyyy HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.None, out formattedDate))
{
    string output = formattedDate.ToString("yyyy-mm-dd HH:mm:ss", CultureInfo.InvariantCulture);
}

然后输出将具有您想要的格式。

答案 2 :(得分:0)

DateTime  dateOf = Convert.ToDateTime("09/25/2014 09:18:24");
string myFormat = "yyyy-mm-dd";
string myDate = dateOf.ToString(myFormat);  // output 2014-18-25 

<强> Datetime format