4

我尝试以DateTime“一般日期短时间”格式显示 a 。当我使用说明g符时,它给了我类似的东西,01-08-13 10:12:00 10:12而不是01-05-13 10:12.

它似乎重复了时间,我不知道为什么。

任何人?

编辑 1 这是我使用的代码:

var startDate = DateTime.MinValue.ToString("g");  
if (Airspace.StartDate != null)  
    startDate = ((DateTime)Airspace.StartDate).ToString("g"); //01-08-13 00:00:00 00:00

编辑 2 当我使用“短日期模式”时会出现同样的问题:

var startDate = DateTime.MinValue.ToString("d");  
if (Airspace.StartDate != null)  
    startDate = ((DateTime)Airspace.StartDate).ToString("d"); //01-08-13 00:00:00

这没有意义!

4

3 回答 3

2

“d”格式说明符应用短日期模式,“g”是短日期和短时间模式的串联。因此,根据您的结果,您不知何故有一个带有时间组件的短日期模式。我可以通过明确设置这样一个短日期模式来重现您的结果,如下所示:

Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortDatePattern = "yyyy-MM-dd HH:mm:ss";
Console.WriteLine(DateTime.Today.ToString("g")); // 2008-05-11 00:00:00 00:00
Console.WriteLine(DateTime.Today.ToString("d")); // 2008-05-11 00:00:00

我认为真正的问题是你最终是如何得到一些看起来非常奇怪的文化背景的!我尝试枚举支持的文化集并寻找其短日期格式包含时间说明符的文化,如下所示:

foreach (var culture in CultureInfo.GetCultures(CultureTypes.AllCultures)
    .OrderByDescending(c => c.DateTimeFormat.ShortDatePattern.Length))
{
    Console.WriteLine($"{culture.Name}   {culture.DateTimeFormat.ShortDatePattern}");
}

但在数百种文化中,我一无所获。那么,您是否可以在代码中的任何地方找到构建CultureInfo对象并将其指定为当前文化的任何内容?如果是,则该代码中的某个地方可能有错误。

于 2018-05-11T13:19:18.133 回答
1

希望这可以帮到你:

  DateTime today = DateTime.Now;
  Console.WriteLine(today.ToString("dd-MM-yy H:mm"));
  //Result: 01-08-13 04:33
  Console.ReadLine();

其他格式:http ://www.geekzilla.co.uk/View00FF7904-B510-468C-A2C8-F859AA20581F.htm

于 2013-08-01T09:30:27.323 回答
0

试试这个

  startDate = DateTime.Now.ToString(System.Globalization.CultureInfo.
    CurrentCulture.DateTimeFormat);
于 2013-08-01T10:54:28.433 回答