【问题标题】:extract the date part from DateTime in C# [duplicate]从C#中的DateTime中提取日期部分[重复]
【发布时间】:2011-12-06 03:05:44
【问题描述】:

代码行DateTime d = DateTime.Today; 产生10/12/2011 12:00:00 AM。如何仅获取日期部分。比较两个日期时需要忽略时间部分。

【问题讨论】:

  • 今天也应该给出 0:00:00 的结果。
  • @digem :您的意思是午夜显示为 12AM?可能。我认为 Today 不会真正返回依赖于文化的值。
  • @Henk:在英语文化中 Today.ToString() 返回那个值 ;)
  • @Henk:是的,抱歉,我不准确。实际上,如果您使用例如 en-US 文化,则 ToString() 会返回该值。只是因为“12.00 AM”等于 24 小时格式的“00.00”;)(我知道这对于非英语的人来说似乎很奇怪,我是意大利人......)

标签: c# datetime comparison


【解决方案1】:

DateTime 是用于存储DateTime 的DataType。但它提供了属性来获取Date 部分。

您可以从Date 属性中获取日期部分。

http://msdn.microsoft.com/en-us/library/system.datetime.date.aspx

DateTime date1 = new DateTime(2008, 6, 1, 7, 47, 0);
Console.WriteLine(date1.ToString());

// Get date-only portion of date, without its time.
DateTime dateOnly = date1.Date;
// Display date using short date string.
Console.WriteLine(dateOnly.ToString("d"));
// Display date using 24-hour clock.
Console.WriteLine(dateOnly.ToString("g"));
Console.WriteLine(dateOnly.ToString("MM/dd/yyyy HH:mm"));   
// The example displays the following output to the console:
//       6/1/2008 7:47:00 AM
//       6/1/2008
//       6/1/2008 12:00 AM
//       06/01/2008 00:00

【讨论】:

  • var object = DateTime.Now; object.Date.ToString("MM/dd/yyyy HH:mm")
  • Here 是使用String.Format另一种解决方案,希望对某人有所帮助。
【解决方案2】:

没有办法“丢弃”时间分量。

DateTime.Today 等同于:

DateTime d = DateTime.Now.Date;

如果您只想显示仅日期部分,只需执行此操作 - 将 ToString 与您需要的格式字符串一起使用。

例如,使用standard format string“D”(长日期格式说明符):

d.ToString("D");

【讨论】:

  • +1:有时答案只是. 离开
  • @Oded。不,它返回相同的。 10/12/2011 12:00:00 AM.
  • @Rauf - 你无法摆脱那部分。你可以选择不显示它。
【解决方案3】:

仅比较数据时间的日期时,请使用 Date 属性。所以这应该适合你

datetime1.Date == datetime2.Date

【讨论】:

  • 这是最好的答案。
  • +1,这与 comparing 日期相关。其他答案用于显示它们
【解决方案4】:
DateTime d = DateTime.Today.Date;
Console.WriteLine(d.ToShortDateString()); // outputs just date

如果您想比较日期,忽略时间部分,请使用 DateTime.YearDateTime.DayOfYear 属性。

代码sn-p

DateTime d1 = DateTime.Today;
DateTime d2 = DateTime.Today.AddDays(3);
if (d1.Year < d2.Year)
    Console.WriteLine("d1 < d2");
else
    if (d1.DayOfYear < d2.DayOfYear)
        Console.WriteLine("d1 < d2");

【讨论】:

    【解决方案5】:

    你可以使用格式字符串

    DateTime time = DateTime.Now;              
    String format = "MMM ddd d HH:mm yyyy";     
    Console.WriteLine(time.ToString(format));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-30
      • 1970-01-01
      • 1970-01-01
      • 2013-09-08
      • 1970-01-01
      • 2014-09-29
      • 2020-09-30
      相关资源
      最近更新 更多