Мне нужно удалить временную часть даты или, возможно, иметь дату в следующем формате в форме object
, а не в форме string
.
06/26/2009 00:00:00:000
Я не могу использовать какие-либо методы преобразования строк
, так как мне нужна дата в объектной
форме.
Я попробовал сначала преобразовать DateTime
в строку
, удалить из нее дату, определенную временем, но она добавляет 12:00:00 AM
, как только я конвертирую ее обратно в DateTime
, объект
возвращается обратно.
Вы можете использовать строки формат выходной строки в формат, который вам нравится.
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
В "дата" свойство возвращает дату в полночь.
Одним из вариантов может быть, чтобы получить отдельные значения (день/месяц/год) отдельно и храните его в нужный тип.
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 в .Сетка всегда есть время по умолчанию 00:00:00:000. Дата свойство типа datetime также Датавремя (!), таким образом, время по умолчанию 00:00:00:000, а также.
Это дефицит .Framework и можно утверждать, что datetime в .Чистая нарушает единый принцип ответственности.
var newDate = DateTime.Now; //newDate.Date property is date portion of DateTime
Вот еще один способ, используя строку.Формат`
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%
Дата использования.ToShortDateString (), чтобы получить дату без времени компонента
ВАР дата = Датавремя.Сейчас ВАР shortDate = дата.ToShortDateString() //будет дать вам 16/01/2019
дата использования.ToString() для настройки формата даты
ВАР дата = Датавремя.Сейчас ВАР shortDate = дата.Метод toString('ДД-МММ-гггг') //дам вам 16-янв-2019
Наткнулся на этот пост, когда пытается решить оригинальным В.
Я использую Asp.Net и после некоторых исследований я обнаружил, когда вы привязки к значению даты в коде, вы можете падение время, поэтому он не будет отображаться на экране.
На C#:
DateTime Today = DateTime.Now;
аспн:
<%: this.Today.ToShortDateString() %>
Создать структуру, которая содержит только нужные свойства. Затем метод расширения, чтобы легко получить, что struct из экземпляра объекта 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();