删除小时:秒:DateTime对象中的毫秒数

我正在尝试从DateTime对象创建一个字符串,产生格式mm:dd:yyyy

通常, DateTime对象为mm:dd:yyyy hrs:min:sec AM/PM

有没有办法快速删除hrs:min:sec AM/PM DateTime的hrs:min:sec AM/PM部分,这样当我将其转换为ToString()它只会导致mm:dd:yyyy

要回答你的问题,不 – 你必须将它存储在不同的类型中。 最简单的选择是使用字符串。

 string date = dateTime.ToString("MM:dd:yyyy"); 

但是我也强烈建议不要在程序内部将日期存储为字符串。 这将使得难以对它们进行任何计算或比较。 此外,我建议你不要强迫你的日期表示forms的特定文化,因为这意味着你的应用程序可能无法在其他文化中按预期工作。

稍微复杂一点的方法是创建一个覆盖ToString的自定义类。 我也避免这样做,因为使用标准库函数的类型仍然很难。 你必须一直来回转换。

只需将其保留为DateTime,并仅在表示层中转换为字符串。 您可以使用DateTime.ToShortDateString打印用户友好的区域性文化字符串。

 datetime DateWithTimeNoSeconds = DateTime.Now.Date.AddHours(DateTime.Now.Hour).AddMinutes(DateTime.Now.Minute); 

这将获取当前日期和时间的日期,并添加小时和分钟。

 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 

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

通常,我使用DateTime.ToShortDateString()以Culture -aware方式转换为字符串。

这样,您可以将其格式化为仅限于当前线程的文化集的当前格式。

虽然在大多数情况下我同意Mark Byers,但我遇到的情况是我需要存储一个日常时间,这个日期时间只是小时的。 存储分钟和秒钟不仅是多余的,而且也是不准确的。 用户只需选择日期和小时,因此当用户选择日期和小时时,分钟和秒将设置为当前时间。

在这种情况下,删除分钟和秒钟非常容易。 这是代码:

 scheduledDate = scheduledDate.AddMinutes( scheduledDate.Minute * -1).AddSeconds( scheduledDate.Second * -1); 

然后我将它作为完整日期时间存储在DB中,其中分钟和秒始终为0。

关于DateTime.AddMinutes (或秒或小时),如果你想删除而不是添加只添加一个负数!

简单的方法,可能不是最好的但是

 DateTime dt = new DateTime(); dt = DateTime.Now; string sdate = dt.ToShortDateString(); dt = DateTime.Parse(sdate); 

或者简而言之

 var dt = DateTime.Parse(DateTime.Now.ToShortDateString()); 

如果要从DateTime对象中删除小时,秒,毫秒(从重置为0)而不转换为字符串,则可以使用Date属性。

 // Get date-only portion of date, without its time. var date = DateTime.Now.Date; 

下面的示例使用Date属性提取DateTime值的日期组件,其时间组件设置为零(或0:00:00或午夜)。

MSDN

这样的日期和时间没有秒:

 private DateTime _startTime; public DateTime StartTime { get { return _startTime; } set { _startTime = value.AddSeconds(-value.Second) .AddMilliseconds(-value.Millisecond); } }