Ответ 1
Используйте свойство Date:
var dateAndTime = DateTime.Now;
var date = dateAndTime.Date;
В переменной date
будет указана дата, время будет 00:00:00
.
Мне нужно удалить временную часть времени даты или, возможно, иметь дату в следующем формате в форме object
не в форме string
.
06/26/2009 00:00:00:000
Я не могу использовать какие-либо методы преобразования string
, поскольку мне нужна дата в форме object
.
Я попробовал сначала преобразовать DateTime
в string
, удалить определенную по времени дату, но он добавляет 12:00:00 AM
, как только я снова верну его обратно к DateTime
object
.
Используйте свойство 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
Подробнее о пользовательских строках формата даты и времени.
Использовать метод 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
вернет дату в полночь.
Одним из вариантов может быть получение отдельных значений (день/месяц/год) отдельно и сохранение их в нужном вам типе.
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.
Самый простой способ достичь даты ТОЛЬКО - это простая функция в Datetime:
DateTime dt = DateTime.now;
String BirthDate = dt.ToShortDateString();
У вас будет только дата в строке дня рождения.
Постарайтесь создать для себя собственную структуру. Объект DateTime будет иметь дату и время как
Вы не можете. DateTime в .NET всегда имеет время, по умолчанию - 00: 00: 00: 000. Свойство Date для DateTime также является DateTime (!), Поэтому также имеет значение по умолчанию: 00: 00: 00: 000.
Это недостаток в .NET Framework, и можно утверждать, что DateTime в .NET нарушает принцип единой ответственности.
Вот еще один метод, использующий 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
Это также работает, если Дата Время хранится в базе данных.
Для получения дополнительной даты и времени форматирования проверьте эти ссылки:
Надежда помогает.
Этот способ получить только дату без времени
DateTime date = DateTime.Now;
string Strdateonly = date.ToString("d");
Выход = 5/16/2015
Я написал структуру 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%
Я удивлен, что никто не упомянул DateTime.Today
var date = DateTime.Today;
// {7/1/2014 12:00:00 AM}
См. MSDN
Используйте 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
Вы можете попробовать это для единственной даты из даты и времени
String.Format("{0:d/M/YYYY}",dt);
Где dt - DateTime
При попытке решить исходный Q столкнулся с этим сообщением.
Я использую Asp.Net, и после некоторых исследований, которые я нашел, когда вы привязываетесь к значению даты в коде позади, вы можете отбросить время, чтобы оно не отображалось на экране.
С#:
DateTime Today = DateTime.Now;
ASPX:
<%: this.Today.ToShortDateString() %>
использовать
DateTime.Now.ToString("dd-MM-yyyy");
по моему опыту ни один из упомянутых решений не работал, может быть, потому, что я хотел удалить время из извлеченной даты из базы данных, но код ниже работал нормально:
var date = target_date.Value.ToString("dd/MM/yyyy");
string dt = myCalender.SelectedDate.ToString();
string date = dt.Remove(10);
displayDate.Content = date;
Если вы принимаете дату из каландра, с этим мы также получаем время. Который не требуется все время. Используя это, мы можем удалить время с даты.
Объявите переменную как строку.
пример:
public string dateOfBirth ;
затем присвойте значение, подобное:
dateOfBirth = ((DateTime)(datetimevaluefromDB)).ToShortDateString();
Если вы преобразовываете его в строку, вы можете легко сделать это следующим образом.
Я принимаю дату как объект DateTime.
date.ToString("d");
Это даст вам только дату.
Создайте структуру, которая содержит только те свойства, которые вы хотите. Затем метод расширения, чтобы легко получить эту структуру из экземпляра 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();
Я знаю, что это старый пост с множеством ответов, но я не видел этого способа удаления временной части. Предположим, что у вас есть переменная DateTime
, называемая myDate
, с датой со временем. Вы можете создать из него новый объект DateTime
без временной части, используя этот конструктор:
public DateTime(int year, int month, int day);
Вот так:
myDate = new DateTime(myDate.Year, myDate.Month, myDate.Day);
Таким образом вы создаете новый объект DateTime
на основе старого, с 00:00:00 как часть времени.
Чтобы получить только часть даты, используйте метод ToString(),
пример: DateTime.Now.Date.ToString("дд/мм/гггг")
Примечание: мм в формате дд/мм/гггг должен быть заглавным
Использовать. Дата объекта DateTime будет игнорировать временную часть.
Вот код:
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(), @"^.*?(?= )");
Производит дату в формате: dd/mm/yyyy
Для использования с помощью datalist, повторителя.. на странице aspx: <% # Eval ( "YourDateString" ). ToString(). Удалить (10)% >
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)
Этот код дает вам четкое представление о записи 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);
Надеюсь, что это поможет.