DateTime现在将Datetime字符串转换为指定的格式

时间:2018-06-13 10:12:57

标签: c# datetime

所以我要求将当前日期的字符串格式转换为我的控制台应用程序的日期时间,但它返回的格式错误,我使用的是ParseExact,例如

var currentDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"); // 2018-06-13 11:10:07.949
var todayDate = DateTime.ParseExact(currentDate, "yyyy-MM-dd HH:mm:ss.fff", CultureInfo.InvariantCulture); // 13/06/2018 11:10:07

我评论了我收到的输出。

我的问题是:为什么它的转换不是我指定的方式?

5 个答案:

答案 0 :(得分:1)

使用ParseExact,您将提供有关输入日期时间格式的信息。如果您想将其格式化为输出,那么您将在ToString方法中执行此操作,就像您在第一行中所做的那样。 所以,你的代码是这样做的:

currentDate将是给定格式的字符串

todayDate将成为DateTime个对象。 如果您希望以给定格式输出todayDate,则应执行以下操作:

todayDate.ToString("yyyy-MM-dd HH:mm:ss.fff");

要输出当前日期时间,它就足以完成

DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");

DateTime对象将始终为DateTime,您只能为其设置输出格式,C#将始终知道如何将DateTime作为对象处理。 在您当前的代码中,您不必要地创建字符串,转换为DateTime,再次转换为字符串......

答案 1 :(得分:1)

DateTime个对象没有格式,ParseExact()方法中的格式参数是一个格式说明符,用于定义日期字符串所需的格式。

来自MSDN:

  

DateTime值及其字符串表示

     

在内部,所有DateTime值都表示为自0001年1月1日午夜12:00:00起经过的刻度数(100纳秒间隔的数量)。实际的DateTime值与中的方式无关。当在用户界面元素中显示或写入文件时,该值会出现。 DateTime值的出现是格式化操作的结果。格式化是将值转换为字符串表示的过程

参考文献: DateTime Structure DateTime.ParseExact Method

答案 2 :(得分:0)

尝试在html代码

中管理您的日期(存储在变量中)
<span>{{MyDate| date:"dd MMM yy hh:mm a"}}</span>

答案 3 :(得分:0)

您的todayDate变量是DateTime。 所以它包含年份:2018年,月份:06,日期:13,依此类推。您的编辑更喜欢(取决于您的计算机或编辑的文化)以将DateTime变量显示为13/06/2018 11:10:07。但它的原始价值无关紧要。

答案 4 :(得分:0)

嗯,DateTime没有任何格式,只有日期和时间。你有两个选择

明确指定格式:

  Console.Write(todayDate.ToString(ci, "yyyy-MM-dd HH:mm:ss.fff"));

指定globaly格式(你可能正在寻找的东西)

  // Current culture 
  CultureInfo ci = CultureInfo.CurrentCulture.Clone() as CultureInfo;

  // ... With specified DateTime format
  ci.DateTimeFormat.ShortDatePattern = "yyyy-MM-dd";
  ci.DateTimeFormat.ShortTimePattern = "HH:mm:ss.fff";

  // Now we have current culture with changed DateTimeFormat 
  CultureInfo.CurrentCulture = ci;

  Console.Write(todayDate);

现在Console.Write(todayDate) .Net将与.ToString() CultureInfo.CurrentCulture进行sources,后者将应用指定的格式。