我需要删除日期时间的时间部分,或者可能有以下格式的日期在对象形式,而不是在字符串形式。

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

我不能使用任何字符串转换方法,因为我需要对象形式的日期。

我尝试先将DateTime转换为字符串,从它中删除特定的时间日期,但它添加了12:00:00 AM,只要我将它转换回DateTime对象。


看看DateTime。日期属性。

获取此实例的日期组件。


使用Date属性:

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

date变量将包含日期,时间部分将是00:00:00。


DateTime。日期

var newDate = DateTime.Now; //newDate.Date property is date portion of DateTime

试着创造你自己的结构。DateTime对象将同时具有日期和时间


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);

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

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

阅读有关自定义日期和时间格式字符串的详细信息。


在我的经验中,上述解决方案都不起作用,可能是因为我想从数据库中提取的日期中删除时间,但下面的代码工作得很好:

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

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

如果你从日历上取日期,我们也会得到时间。这不是一直都需要的。使用它,我们可以从日期中删除时间。


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

这是. net框架的不足之处,可以认为。net中的DateTime违反了单一责任原则。


使用方法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

你可以试着从约会时间开始

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

dt在哪里是DateTime


在试图解决最初的Q时,偶然发现了这篇文章。

我在用Asp。Net和一些研究之后,我发现当你绑定到代码后面的日期值时,你可以删除时间,这样它就不会显示在屏幕上。

C#:

DateTime Today = DateTime.Now;

aspx:

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

use

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

我很惊讶居然没人提到DateTime。今天

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

看到MSDN


将变量声明为字符串。

例子:

public string dateOfBirth ;

然后赋值如下:

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

使用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

DateTime dd=DateTiem.Now;
string date=dd.toString("dd/MM/YYYY");

使用一点RegEx:

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

生成格式为:dd/mm/yyyy的日期


如果您要将其转换为字符串,您可以轻松地像这样做。

我将date作为DateTime对象。

date.ToString("d");

这只会给你日期。


供数据主义者、重复者使用。在aspx页面中:<%# Eval("YourDateString").ToString().删除(10)%>


创建只包含所需属性的结构体。然后使用扩展方法从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();

我知道这是一个有很多答案的老帖子,但我还没有见过这种删除时间部分的方法。假设您有一个名为myDate的DateTime变量,其中日期和时间部分。你可以从它创建一个新的DateTime对象,没有时间部分,使用这个构造函数:

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

是这样的:

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

通过这种方式,您可以基于旧的DateTime对象创建一个新的DateTime对象,其中00:00:00作为时间部分。


这种方法只得到日期而没有时间

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

输出= 5/16/2015


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();
}

这可以简单地这样做:

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

这段代码使您可以清楚地分别编写日期和时间

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);

希望这能有所帮助。


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

到达ONLY date的最简单方法是Datetime中的简单函数:

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

你将只在生日字符串中有日期。


获取DateTime对象的Date部分对我来说没有效果,因为我在客户端工作,返回的web服务值有一些空日期。结果,它试图获取空值的Date部分,并抛出运行时异常。下面是我解决问题的方法:

string dt = employer.BirthDay.ToString();
if(dt == ""){ dt = "N/A";}
else dt = dt.Substring(0,10);

将DateTime值作为字符串转换为字符串变量。 检查它是否为空。如果为空,分配一个字符串变量。 如果不为空,则获取字符串DateTime值的前10个字符并将其分配给字符串变量。

我分享这个是为了将来参考。


我写了一个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的方法。格式

    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

如果日期时间存储在数据库中,这也适用。

有关更多日期和时间格式,请检查这些链接:

参考1

参考2

希望有帮助。


如果你想从DateTime中删除部分时间,尝试使用下面的代码:

DateTime dt = new DateTime();

dt = DateTime.Now; //ex: 31/1/2017 6:30:20 PM

TimeSpan remainingTime = new TimeSpan(0, dt.Hour - 5, dt.Minute - 29, dt.Second - 19);
dt=dt.Add(remainingTime);

label1.Text = dt.ToString("HH:mm:ss"); // must be HH not hh

输出:01:01:01


试试这个,如果你使用DateTimeOffset,它也会照顾时区

date1 = date1.LocalDateTime.Date;

如果你需要增加工作时间,可以这样做:

date1 = date1.LocalDateTime.Date;
date1 = date1.AddHours(23).AddMinutes(59).AddSeconds(59);

只需使用一行代码:

var dateAndTime = DateTime.Now.Date;

使用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 onlyDate = DateTime. today . date; 或者,这是相同的DateTime onlyDate = yourDateTime.Date; 所以使用属性Date。


使用ToString()方法只获取日期部分,

操作: DateTime。现在约会。ToString()“dd / MM / yyyy,

注意: “dd/ mm /yyyy”格式中的“mm”必须大写


如果你想使用绑定,只显示日期部分而不显示时间

ToolTip=“{{Binding TransactionModel.TransactionDate, StringFormat=d}”


您可以使用下面的简单代码。

代码:DateTime.Now.ToShortDateString ();

前任。 Console.WriteLine(DateTime.Now.ToShortDateString());


最简单的方法是这样的,它只返回日期:

var date = DateTime.Now.ToShortDateString();

将Date属性添加到DateTime变量

var dateTime = DateTime.Now
var onlyDate = dateTime.Date

或者您也可以使用DataType注释。

[DataType(DataType.Date)]
public DateTime dateTime {get; set;}

DataType注释位于System.ComponentModel.DataAnnotations命名空间内。


自从。net 6 / c# 10以来,你可以这样做:

var dateOnly = DateOnly.FromDateTime(dateTime);

您可以使用像https://www.nuget.org/packages/Date/这样的Date库 使用Date值,将它们转换为DateTimes,等等。

免责声明我是上述软件包的作者。


这适用于c# 10及以上版本,现在只有DateOnly和TimeOnly格式可用。使用下面的格式,您可以从DateTime格式中提取DateOnly。

DateOnly myDateNoTime = DateOnly.FromDateTime(DateTime.Now);