如何在DateTime对象中的C#中删除时间部分的date?
我需要删除时间部分date时间或可能有以下格式的object
forms的date不是以string
的forms。
06/26/2009 00:00:00:000
我不能使用任何string
转换方法,因为我需要object
forms的date。
我首先尝试将DateTime
转换为string
,从中删除时间特定的date,但是一旦我将它转换回DateTime
object
,它就立即添加了12:00:00 AM
。
请帮忙。
使用Date属性:
var dateAndTime = DateTime.Now; var date = dateAndTime.Date;
date
variables将包含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服务值有一些null
date。 因此,它试图获取空值的date部分,并引发运行时exception。 下面的例子是我如何解决我的问题:
string dt = employer.BirthDay.ToString(); if(dt == ""){ dt = "N/A";} else dt = dt.Substring(0,10);
- 将DateTime值作为string获取到stringvariables中。
- 检查它是否为空。 如果为null,则分配一个stringvariables。
- 如果不为null,则获取string
DateTime
值的前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(); }
这段代码给你一个明确的看法,分别写Date
和Time
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);
希望这可以帮助。