c#DateTime,修剪而不转换为字符串
如何“修剪”c#中的c#DateTime,修剪而不转换为字符串,c#,.net,sql-server,C#,.net,Sql Server,如何“修剪”c#中的DateTime属性的值 例如,当我得到一个日期时,它的格式是“10/1/2010 00:00:00” 如何“修剪”'Time'00:00:00而不将其转换为字符串 因为我使用了类型为DateTime的属性来处理这个问题,所以我不需要转换为字符串 非常感谢您的帮助。如果您询问DateTime对象是否可以是时间无关的,答案是否。您可以创建一个用户定义的Date类,该类仅返回DateTime对象的日期部分。如果您只是想截断时间,请参见下文 var dt = DateTime.No
DateTime
属性的值
例如,当我得到一个日期时,它的格式是“10/1/2010 00:00:00”
如何“修剪”'Time'00:00:00而不将其转换为字符串
因为我使用了类型为DateTime
的属性来处理这个问题,所以我不需要转换为字符串
非常感谢您的帮助。如果您询问DateTime对象是否可以是时间无关的,答案是否。您可以创建一个用户定义的Date类,该类仅返回DateTime对象的日期部分。如果您只是想截断时间,请参见下文
var dt = DateTime.Now; // 10/1/2010 10:44:24 AM
var dateOnly = dt.Date; // 10/1/2010 12:00:00 AM
DateTime now = DateTime.Now;
DateTime today = now.Date;
或
你不能从DateTime对象中获取它,然后.ToString()将其删除吗
您可能希望从结尾处删除毫秒…这无法完成。DateTime始终有一个时间,即使时间是00:00:00
您只能在转换为字符串时删除它。如其他人所述
var now = DateTime.Now;
var today = now.Date;
是首选的方式。但是,由于我喜欢timtowtdi
哲理:
var now = DateTime.Now;
var today = now.Add(-now.TimeOfDay);
您可以将日期修剪为小时分钟,天
DateTime t = DateTime.Now;
DateTime t2 = t - new TimeSpan(t.Ticks % TimeSpan.TicksPerDay);
您还可以使用TicksPerHour、TicksPerMinute和TicksPerSecond 和/或dt.ToSortDateString();当需要显示时,这并不能回答问题。当然,这个问题没有答案,因为DateTime总是有时间的。@Kevin Gale:我不同意。我想这已经达到了OP的目的。也许他会在这篇文章中澄清问题或评论。@codekaizen:我不同意。他特别谈到消除零时间。当然,他显然不确定日期时间是如何工作的,所以一切皆有可能。@凯文·盖尔:没错,任何解释都有可能,他显然是
DateTime
类型的新手。因此,我认为我的回答是有用的。否决票似乎很严厉。你的问题毫无意义。尽管日期可以是00:00:00,但您的日期始终有时间。类名为日期+时间。日期时间。没有“零时间”,也许你没有足够明确地解释这个问题。正如其他人所说,根据定义,DateTime类将始终具有时间部分。如果你的程序依赖于没有时间,那么设计可能有问题。。或者,您只是没有把事情弄清楚……我认为您混淆了DateTime类型的结构和它的ToString()表示(这是调试器显示的)。无法“修剪”“00:00:00”,因为只有将日期时间转换为字符串后,它才会存在。这就是为什么会有多个toxxString()方法。理论上,这会让您陷入麻烦,因为您的两个语句之间存在时间差:)这是我首先分配变量的方式。由于DateTime是一个结构,所以now是当前日期的只读副本,now.Add(-now.TimeOfDay)
将始终将时间部分重置为00:00:00
var now = DateTime.Now;
var today = now.Add(-now.TimeOfDay);
DateTime t = DateTime.Now;
DateTime t2 = t - new TimeSpan(t.Ticks % TimeSpan.TicksPerDay);