我需要删除日期时间的时间部分,或者可能以 object
形式而不是 string
形式的以下格式的日期。
06/26/2009 00:00:00:000
我不能使用任何 string
转换方法,因为我需要 object
形式的日期。
我首先尝试将 DateTime
转换为 string
,从中删除特定时间的日期,但一旦我再次将其转换回 DateTime
object
,它就会添加 12:00:00 AM
。
var dateTime = DateTime.Now.Date;
使用 Date 属性:
var dateAndTime = DateTime.Now;
var date = dateAndTime.Date;
date
变量将包含日期,时间部分将是 00:00:00
。
您可以使用格式字符串为输出字符串提供您喜欢的格式。
DateTime dateAndTime = DateTime.Now;
Console.WriteLine(dateAndTime.ToString("dd/MM/yyyy")); // Will give you smth like 25/05/2011
阅读有关 Custom date and time format strings 的更多信息。
CultureInfo.DateTimeFormat.ShortDatePattern
dd/MM/yyyy
更新为您想要的!
.ToString()
正是我所需要的,谢谢!
使用方法 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
ToShortDateString
未实现 IFormatProvider
:/
查看 DateTime.Date 属性。
获取此实例的日期组件。
var dateTime = DateTime.Now.Date;
Date
属性将返回午夜的日期。
一种选择可能是分别获取各个值(日/月/年)并将其存储在您想要的类型中。
var dateAndTime = DateTime.Now;
int year = dateAndTime.Year;
int month = dateAndTime.Month;
int day = dateAndTime.Day;
string.Format("{0}/{1}/{2}", month, day, year);
以上答案都没有解决我在winforms上的问题。
达到 ONLY 日期的最简单方法是 Datetime 中的简单函数:
DateTime dt = DateTime.now;
String BirthDate = dt.ToShortDateString();
您只会在生日字符串中有日期。
(string)
演员表? ToShortDateString
返回的类型确实是一个字符串。
尝试为此制作自己的结构。 DateTime 对象将同时具有日期和时间
你不能。 .NET 中的 DateTime 总是有时间,默认为 00:00:00:000。 DateTime 的 Date 属性也是 DateTime (!),因此它的时间也默认为 00:00:00:000。
这是 .NET Framework 的不足之处,可以说 .NET 中的 DateTime 违反了 Single Responsibility Principle。
最简单的方法是这样的,它只会返回日期:
var date = DateTime.Now.ToShortDateString();
这是使用 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
如果日期时间存储在数据库中,这也适用。
有关更多日期和时间格式,请查看以下链接:
希望有所帮助。
var newDate = DateTime.Now; //newDate.Date property is date portion of DateTime
这种只获取没有时间的日期的方式
DateTime date = DateTime.Now;
string Strdateonly = date.ToString("d");
产出 = 2015 年 5 月 16 日
我写了一个 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%,敬请见谅
使用 date.ToShortDateString() 获取没有时间组件的日期
var date = DateTime.Now
var shortDate = date.ToShortDateString() //will give you 16/01/2019
使用 date.ToString() 自定义日期的格式
var date = DateTime.Now
var shortDate = date.ToString('dd-MMM-yyyy') //will give you 16-Jan-2019
我很惊讶没有人提到 DateTime.Today
var date = DateTime.Today;
// {7/1/2014 12:00:00 AM}
请参阅MSDN
如果要将其转换为字符串,则可以像这样轻松地做到这一点。
我将日期作为您的 DateTime 对象。
date.ToString("d");
这只会给你日期。
从 .NET 6 / C# 10 开始,您可以这样做:
var dateOnly = DateOnly.FromDateTime(dateTime);
您可以尝试从日期时间开始的唯一日期
String.Format("{0:d/M/YYYY}",dt);
其中 dt 是 DateTime
尝试解决原始 Q 时遇到此帖子。
我正在使用 Asp.Net,经过一些研究,我发现当您绑定到后面代码中的日期值时,您可以删除时间,这样它就不会显示在屏幕上。
C#:
DateTime Today = DateTime.Now;
aspx:
<%: this.Today.ToShortDateString() %>
利用
DateTime.Now.ToString("dd-MM-yyyy");
您可以在下面使用这个简单的代码。
代码:DateTime.Now.ToShortDateString();
前任。 Console.WriteLine(DateTime.Now.ToShortDateString());
string dt = myCalender.SelectedDate.ToString();
string date = dt.Remove(10);
displayDate.Content = date;
如果您从日历中获取日期,那么我们也可以获得时间。这不是一直需要的。使用它我们可以从日期中删除时间。
根据我的经验,上述解决方案都不起作用,可能是因为我想从数据库中提取日期中删除时间,但下面的代码运行良好:
var date = target_date.Value.ToString("dd/MM/yyyy");
将变量声明为字符串。
例子 :
public string dateOfBirth ;
然后分配一个值,如:
dateOfBirth = ((DateTime)(datetimevaluefromDB)).ToShortDateString();
我知道这是一篇有很多答案的旧帖子,但我还没有看到这种删除时间部分的方法。假设您有一个名为 myDate
的 DateTime
变量,其中包含日期和时间部分。您可以使用以下构造函数从中创建一个新的 DateTime
对象,而无需时间部分:
public DateTime(int year, int month, int day);
像这样:
myDate = new DateTime(myDate.Year, myDate.Month, myDate.Day);
这样,您可以在旧对象的基础上创建一个新的 DateTime
对象,并将 00:00:00 作为时间部分。
这可以简单地这样做:
var dateOnly = new DateTime(dateTime.Year, dateTime.Month, dateTime.Day)
创建一个仅包含所需属性的结构。然后是一个扩展方法,可以轻松地从 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();
要仅获取日期部分,请使用 ToString() 方法,
示例:DateTime.Now.Date.ToString("dd/MM/yyyy")
注意:dd/MM/yyyy格式中的mm必须大写
使用 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.Match(Date.Now.ToString(), @"^.*?(?= )");
以以下格式生成日期:dd/mm/yyyy
06/26/2009 00:00:00.000
,而是63381571200000000
,即自DateTime.MinValue
(01/01/0001) 以来的 Ticks 数(1/100000000 秒)。如果要显示日期,则将其转换为字符串,否则,它的时间部分为午夜。处理它。