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

loc*_*boy 14 .net c# asp.net datetime datetime-format

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

通常,该DateTime对象来自mm:dd:yyyy hrs:min:sec AM/PM.

有没有办法快速删除hrs:min:sec AM/PMDateTime 的部分,以便当我转换它时,ToString()它只会导致mm:dd:yyyy

Mar*_*ers 12

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

string date = dateTime.ToString("MM:dd:yyyy");
Run Code Online (Sandbox Code Playgroud)

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

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

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


Dav*_*ave 10

datetime DateWithTimeNoSeconds = 
DateTime.Now.Date.AddHours(DateTime.Now.Hour).AddMinutes(DateTime.Now.Minute);
Run Code Online (Sandbox Code Playgroud)

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

  • 你应该只做一次`DateTime.Now`,将结果保存在一个变量中并使用那个变量,否则你冒着构建一个小时的"DateWithTimeNoSeconds",甚至一天休息的风险(如果在一小时后使用)/天).示例:`var now = DateTime.Now; now = new DateTime(now.Year,now.Month,now.Day,now.Hour,now.Minute,0);` (12认同)

Gop*_*opi 8

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
Run Code Online (Sandbox Code Playgroud)

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


alo*_*ica 8

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

// Get date-only portion of date, without its time.
var date = DateTime.Now.Date;
Run Code Online (Sandbox Code Playgroud)

msdn


Uwe*_*eim 7

通常,我使用DateTime.ToShortDateString()以一种Culture意识的方式转换为字符串.

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


小智 7

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

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

scheduledDate = scheduledDate.AddMinutes(
    scheduledDate.Minute * -1).AddSeconds(
    scheduledDate.Second * -1);
Run Code Online (Sandbox Code Playgroud)

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