在c#中没有从DateTime获取正确的日期

时间:2018-03-21 13:58:25

标签: c# datetime

我只需要 yyyy-MM-dd 格式的日期,但我的日期格式错误(20/03/2018 0:00:00)。

var d = Convert.ToDateTime("2018-03-20T00:00:00.000",CultureInfo.InvariantCulture).ToString("yyyy-MM-dd");
var finaldate = DateTime.TryParseExact(d, "yyyy-MM-dd", null);

输出我正在--20 / 03/2018 0:00:00 预期 - 2018-03-20

2 个答案:

答案 0 :(得分:4)

当他们写下“DateTime没有格式”时,我会尝试解释其他人的意思。

DateTime是一种C#类型,具有年,月,日等属性。

如果您要打印DateTime,首先必须将其转换为string。在此转换过程中,您可以定义输出格式。

此外,如果您将string解析为DateTime,则可以定义预期的输入格式。

这是“Standard Date and Time Format Strings”/“Custom Date and Time Format Strings”的用途。

一个例子:

string d = Convert.ToDateTime("2018-03-20T00:00:00.000",CultureInfo.InvariantCulture).ToString("yyyy-MM-dd");
DateTime finaldate = DateTime.TryParseExact(d, "yyyy-MM-dd", null); // not a string!

int year = finadate.Year;    // year == 2018 (a number!)
int month = finaldate.Month; // month == 3 (a number again!)

string isoFormat = finaldate.ToString("yyyy-MM-dd"); // isoFormat == "2018-03-20"
string usFormat = finaldate.ToString("MM/dd/yyyy");  // usFormat == "03/20/2018"
// and so on...

请注意,如果您只是在没有指定任何格式的情况下调用ToString(),结果将取决于当前线程的文化(可能从您显示的输出判断为“en-Us”)。请参阅DateTime.ToString Method

答案 1 :(得分:0)

DateTime始终返回带有时间部分的DateTime对象。 要获得预期的输出,您必须返回字符串,例如。 DateTime.Now.ToString("dd-MM-yyyy")