如何在DateTime对象中的C#中删除时间部分的date?

我需要删除时间部分date时间或可能有以下格式的objectforms的date不是以string的forms。

 06/26/2009 00:00:00:000 

我不能使用任何string转换方法,因为我需要objectforms的date。

我首先尝试将DateTime转换为string ,从中删除时间特定的date,但是一旦我将它转换回DateTime object ,它就立即添加了12:00:00 AM

请帮忙。

使用Date属性:

 var dateAndTime = DateTime.Now; var date = dateAndTime.Date; 

datevariables将包含date,时间部分将是00:00:00

您可以使用格式string为输出string提供您喜欢的格式。

 DateTime dateAndTime = DateTime.Now; Console.WriteLine(dateAndTime.ToString("dd/MM/yyyy")); // Will give you smth like 25/05/2011 

在这里阅读更多。

使用方法ToShortDateString。 请参阅文档http://msdn.microsoft.com/en-us/library/system.datetime.toshortdatestring.aspx

 var dateTimeNow = DateTime.Now; // Return 00/00/0000 00:00:00 var dateOnlyString = dateTimeNow.ToShortDateString(); //Return 00/00/0000 

看看DateTime.Date属性。

获取此实例的date组件。

Date属性将在午夜返回date。

一种select可能是单独获取个人价值(日/月/年),并将其存储在您想要的types中。

 var dateAndTime = DateTime.Now; int year = dateAndTime.Year; int month = dateAndTime.Month; int day = dateAndTime.Day; 

试着做出你自己的结构。 DateTime对象将有date和时间

DateTime.Date

你不能。 .NET中的DateTime总是有时间,默认为00:00:00:000。 DateTime的Date属性也是DateTime(!),因此时间默认为00:00:00:000。

这是.NET框架中的一个短缺,可以说.NET中的DateTime违反了单一责任原则 。

只有这样才能得到没有时间的date

 DateTime date = DateTime.Now; string Strdateonly = date.ToString("d"); 

产量= 5/16/2015

以上答案都没有解决我在winforms上的问题。

达到唯一date的最简单方法是Datetime中的简单function:

 DateTime dt = DateTime.now; String BirthDate = dt.ToShortDateString(); 

您将只有生日string中的date。

我很惊讶没有人提到DateTime.Today

 var date = DateTime.Today; // {7/1/2014 12:00:00 AM} 

请参阅MSDN

这里是另一种使用String.Format 方法

  DateTime todaysDate = DateTime.UtcNow; string dateString = String.Format("{0:dd/MM/yyyy}", todaysDate); Console.WriteLine("Date with Time: "+ todaysDate.ToString()); Console.WriteLine("Date Only : " + dateString); 

输出:

 Date with Time: 9/4/2016 11:42:16 AM Date Only : 04/09/2016 

这也适用于date时间存储在数据库中。

更多date和时间格式检查这些链接:

参考文献1

参考2

希望有帮助。

使用

 DateTime.Now.ToString("dd-MM-yyyy"); 

我写了一个DateOnly结构。 这在皮肤下使用DateTime,但没有时间部分公开地公开:

 using System; public struct DateOnly : IComparable, IFormattable, IComparable<DateOnly>, IEquatable<DateOnly> { private DateTime _dateValue; public int CompareTo(object obj) { if (obj == null) { return 1; } DateOnly otherDateOnly = (DateOnly)obj; if (otherDateOnly != null) { return ToDateTime().CompareTo(otherDateOnly.ToDateTime()); } else { throw new ArgumentException("Object is not a DateOnly"); } } int IComparable<DateOnly>.CompareTo(DateOnly other) { return this.CompareToOfT(other); } public int CompareToOfT(DateOnly other) { // If other is not a valid object reference, this instance is greater. if (other == new DateOnly()) { return 1; } return this.ToDateTime().CompareTo(other.ToDateTime()); } bool IEquatable<DateOnly>.Equals(DateOnly other) { return this.EqualsOfT(other); } public bool EqualsOfT(DateOnly other) { if (other == new DateOnly()) { return false; } if (this.Year == other.Year && this.Month == other.Month && this.Day == other.Day) { return true; } else { return false; } } public static DateOnly Now() { return new DateOnly(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day); } public static bool TryParse(string s, ref DateOnly result) { DateTime dateValue = default(DateTime); if (DateTime.TryParse(s, out dateValue)) { result = new DateOnly(dateValue.Year, dateValue.Month, dateValue.Day); return true; } else { return false; } } public static DateOnly Parse(string s) { DateTime dateValue = default(DateTime); dateValue = DateTime.Parse(s); return new DateOnly(dateValue.Year, dateValue.Month, dateValue.Day); } public static DateOnly ParseExact(string s, string format) { CultureInfo provider = CultureInfo.InvariantCulture; DateTime dateValue = default(DateTime); dateValue = DateTime.ParseExact(s, format, provider); return new DateOnly(dateValue.Year, dateValue.Month, dateValue.Day); } public DateOnly(int yearValue, int monthValue, int dayValue) : this() { Year = yearValue; Month = monthValue; Day = dayValue; } public DateOnly AddDays(double value) { DateTime d = new DateTime(this.Year, this.Month, this.Day); d = d.AddDays(value); return new DateOnly(d.Year, d.Month, d.Day); } public DateOnly AddMonths(int months) { DateTime d = new DateTime(this.Year, this.Month, this.Day); d = d.AddMonths(months); return new DateOnly(d.Year, d.Month, d.Day); } public DateOnly AddYears(int years) { DateTime d = new DateTime(this.Year, this.Month, this.Day); d = d.AddYears(years); return new DateOnly(d.Year, d.Month, d.Day); } public DayOfWeek DayOfWeek { get { return _dateValue.DayOfWeek; } } public DateTime ToDateTime() { return _dateValue; } public int Year { get { return _dateValue.Year; } set { _dateValue = new DateTime(value, Month, Day); } } public int Month { get { return _dateValue.Month; } set { _dateValue = new DateTime(Year, value, Day); } } public int Day { get { return _dateValue.Day; } set { _dateValue = new DateTime(Year, Month, value); } } public static bool operator == (DateOnly aDateOnly1, DateOnly aDateOnly2) { return (aDateOnly1.ToDateTime() == aDateOnly2.ToDateTime()); } public static bool operator != (DateOnly aDateOnly1, DateOnly aDateOnly2) { return (aDateOnly1.ToDateTime() != aDateOnly2.ToDateTime()); } public static bool operator > (DateOnly aDateOnly1, DateOnly aDateOnly2) { return (aDateOnly1.ToDateTime() > aDateOnly2.ToDateTime()); } public static bool operator < (DateOnly aDateOnly1, DateOnly aDateOnly2) { return (aDateOnly1.ToDateTime() < aDateOnly2.ToDateTime()); } public static bool operator >= (DateOnly aDateOnly1, DateOnly aDateOnly2) { return (aDateOnly1.ToDateTime() >= aDateOnly2.ToDateTime()); } public static bool operator <= (DateOnly aDateOnly1, DateOnly aDateOnly2) { return (aDateOnly1.ToDateTime() <= aDateOnly2.ToDateTime()); } public static TimeSpan operator - (DateOnly aDateOnly1, DateOnly aDateOnly2) { return (aDateOnly1.ToDateTime() - aDateOnly2.ToDateTime()); } public override string ToString() { return _dateValue.ToShortDateString(); } public string ToString(string format) { return _dateValue.ToString(format); } public string ToString(string fmt, IFormatProvider provider) { return string.Format("{0:" + fmt + "}", _dateValue); } public string ToShortDateString() { return _dateValue.ToShortDateString(); } public string ToDbFormat() { return string.Format("{0:yyyy-MM-dd}", _dateValue); } } 

这是从VB.NET转换,所以道歉,如果一些转换不是100%

 string dt = myCalender.SelectedDate.ToString(); string date = dt.Remove(10); displayDate.Content = date; 

如果你从日历上取date,这样我们也可以得到时间。 这不是必须的。 使用这个我们可以从date中删除时间。

您可以尝试这从date时间唯一的date

 String.Format("{0:d/M/YYYY}",dt); 

其中dt是DateTime

试图解决原Q时遇到这个post。

我正在使用Asp.Net,经过一些研究后,我发现当你绑定到后面的代码date的值,你可以放弃时间,所以它不会显示在屏幕上。

C#:

 DateTime Today = DateTime.Now; 

ASPX:

 <%: this.Today.ToShortDateString() %> 

将该variables声明为一个string。

例如:

 public string dateOfBirth ; 

然后分配一个值,如:

 dateOfBirth = ((DateTime)(datetimevaluefromDB)).ToShortDateString(); 

我知道这是一个有很多答案的旧post,但我还没有看到这种删除时间部分的方式。 假设你有一个名为myDate的date时间variables,date和时间部分。 你可以使用这个构造函数从中创build一个新的DateTime对象,而不需要时间部分:

 public DateTime(int year, int month, int day); 

喜欢这个:

 myDate = new DateTime(myDate.Year, myDate.Month, myDate.Day); 

这样你就可以创build一个新的基于旧的DateTime对象,00:00:00作为时间的一部分。

创build一个只包含你想要的属性的结构。 然后是一个扩展方法,以便从DateTime的实例中轻松获取该结构。

 public struct DateOnly { public int Day { get; set; } public int Month { get; set; } public int Year { get; set; } } public static class DateOnlyExtensions { public static DateOnly GetDateOnly(this DateTime dt) { return new DateOnly { Day = dt.Day, Month = dt.Month, Year = dt.Year }; } } 

用法

 DateTime dt = DateTime.Now; DateOnly result = dt.GetDateOnly(); 

根据我的经验,上述解决scheme都不起作用,也许是因为我想从数据库中提取date中删除时间,但下面的代码工作正常:

 var date = target_date.Value.ToString("dd/MM/yyyy"); 

使用DateTime对象的date将忽略时间部分。

这是代码:

 DateTime dateA = DateTime.Now; DateTime dateB = DateTime.Now.AddHours(1).AddMinutes(10).AddSeconds(14); Console.WriteLine("Date A: {0}",dateA.ToString("o")); Console.WriteLine("Date B: {0}", dateB.ToString("o")); Console.WriteLine(String.Format("Comparing objects A==B? {0}", dateA.Equals(dateB))); Console.WriteLine(String.Format("Comparing ONLY Date property A==B? {0}", dateA.Date.Equals(dateB.Date))); Console.ReadLine(); 

输出:

 >Date A: 2014-09-04T07:53:14.6404013+02:00 >Date B: 2014-09-04T09:03:28.6414014+02:00 >Comparing objects A==B? False >Comparing ONLY Date property A==B? True 

使用一点RegEx:

 Regex.Match(Date.Now.ToString(), @"^.*?(?= )"); 

以格式生成date:dd / mm / yyyy

如果你把它转换成string,你可以很容易地做到这一点。

我将date作为DateTime对象。

 date.ToString("d"); 

这将只给你date。

为了使用datalist,repeater ..在aspx页面:<%#Eval(“YourDateString”)。ToString()。Remove(10)%>

这可以简单地这样做:

 var dateOnly = new DateTime(dateTime.Year, dateTime.Month, dateTime.Day) 

获取DateTime对象的Date部分对我来说并没有锻炼,因为我在客户端工作,返回的Web服务值有一些nulldate。 因此,它试图获取空值的date部分,并引发运行时exception。 下面的例子是我如何解决我的问题:

 string dt = employer.BirthDay.ToString(); if(dt == ""){ dt = "N/A";} else dt = dt.Substring(0,10); 
  1. 将DateTime值作为string获取到stringvariables中。
  2. 检查它是否为空。 如果为null,则分配一个stringvariables。
  3. 如果不为null,则获取stringDateTime值的前10个字符,并将其分配给stringvariables。

我分享这个以供将来参考。

 DateTime dd=DateTiem.Now; string date=dd.toString("dd/MM/YYYY"); 
 static void Main(string[] args) { string dateStrings = "2014-09-01T03:00:00+00:00" ; DateTime convertedDate = DateTime.Parse(dateStrings); Console.WriteLine(" {0} ----------------- {1}", convertedDate,DateTime.Parse(convertedDate.ToString()).ToString("dd/MM/yyyy")); Console.Read(); } 

这段代码给你一个明确的看法,分别写DateTime

 string time = DateTime.Now.Hour.ToString("00") + ":" + DateTime.Now.Minute.ToString("00") + ":" + DateTime.Now.Second.ToString("00"); string date = DateTime.Now.ToString("M-dd-yyyy"); MessageBox.Show(date + "\n" + time); 

希望这可以帮助。