Comment supprimer la partie temps de date dans C# dans L'objet DateTime seulement?
j'ai besoin de retirer la portion de la date de fois ou probablement avoir la date dans le format suivant dans object
forme pas dans la forme de string
.
06/26/2009 00:00:00:000
Je ne peux pas utiliser les méthodes de conversion string
car j'ai besoin de la date dans le formulaire object
.
j'ai essayé d'abord la conversion du DateTime
à un string
, supprimer le temps de date précise, mais il ajoute 12:00:00 AM
dès que je reconvertir DateTime
object
de retour.
30 réponses
utiliser la méthode pour raccourcir les délais. Voir la documentation 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
la propriété Date
retournera la date à minuit.
Une option pourrait être d'obtenir les valeurs individuelles (jour/mois/année) séparément et de les stocker dans le type que vous souhaitez.
var dateAndTime = DateTime.Now;
int year = dateAndTime.Year;
int month = dateAndTime.Month;
int day = dateAndTime.Day;
string.Format("{0}/{1}/{2}", month, day, year);
essayez de faire votre propre Structure pour cela. Objet DateTime aura la date et l'heure à la fois
aucune des réponses ci-dessus n'a résolu mon problème sur winforms.
la façon la plus facile d'atteindre seulement date est la fonction simple dans Datetime:
DateTime dt = DateTime.now;
String BirthDate = dt.ToShortDateString();
vous n'aurez que la date dans la chaîne D'anniversaire .
Vous ne pouvez pas. Un DateTime .NET ont toujours un temps, par défaut 00:00:00:000. La propriété Date d'une DateTime est aussi une DateTime (!), donc avoir un temps par défaut 00:00:00:000.
il s'agit d'une lacune dans le cadre de .NET, et on pourrait faire valoir que DateTime in .net viole le " Single Responsibility Principle .
de Cette façon, d'obtenir seulement la date, sans temps
DateTime date = DateTime.Now;
string Strdateonly = date.ToString("d");
Output = 5/16/2015
Voici une autre méthode utilisant 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);
sortie:
Date with Time: 9/4/2016 11:42:16 AM
Date Only : 04/09/2016
cela fonctionne aussi si l'Heure de la Date est stockée dans la base de données.
pour plus de formatage de Date et D'heure, consultez ces liens:
Espoir aide.
est tombé sur ce post en essayant de résoudre le Q.
j'utilise Asp.Net et après quelques recherches que j'ai trouvé quand vous êtes lié à la valeur de la date en code derrière, vous pouvez laisser tomber l'heure ainsi il ne s'affichera pas à l'écran.
C#:
DateTime Today = DateTime.Now;
aspx:
<%: this.Today.ToShortDateString() %>
j'ai écrit une structure DateOnly
. Cela utilise un DateTime sous la peau, mais aucune partie du temps ne sont exposés publiquement:
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, so apologies if some conversions are not 100%
string dt = myCalender.SelectedDate.ToString();
string date = dt.Remove(10);
displayDate.Content = date;
si vous prenez la date de calender, avec cela nous obtenons aussi du temps. Ce qui n'est pas nécessaire de tous les temps. En utilisant ceci nous pouvons supprimer l'Heure de la date.
d'après mon expérience, aucune de ces solutions n'a fonctionné, peut-être parce que je voulais supprimer l'Heure de la date extraite de la base de données, mais le code ci-dessous a bien fonctionné:
var date = target_date.Value.ToString("dd/MM/yyyy");
vous pouvez essayer cette Date pour la seule date à partir de la Datetime
String.Format("{0:d/M/YYYY}",dt);
où dt est le DateTime
déclare la variable comme une chaîne.
exemple:
public string dateOfBirth ;
puis attribuer une valeur comme :
dateOfBirth = ((DateTime)(datetimevaluefromDB)).ToShortDateString();
si vous le convertissez en chaîne, vous pouvez facilement le faire comme ceci.
je prends date comme objet DateTime.
date.ToString("d");
cela ne vous donnera que la date.
je sais que c'est un vieux post avec beaucoup de réponses, mais je n'ai pas vu cette façon d'enlever la partie de temps. Supposons que vous ayez une variable DateTime
appelée myDate
, avec la date avec le temps partiel. Vous pouvez créer un nouvel objet DateTime
à partir de celui-ci, sans la partie time, en utilisant ce constructeur:
public DateTime(int year, int month, int day);
comme ceci:
myDate = new DateTime(myDate.Year, myDate.Month, myDate.Day);
de cette façon, vous créez un nouvel objet DateTime
basé sur l'ancien, avec 00: 00: 00 comme temps partie.
créez une structure qui ne contient que les propriétés que vous voulez. Ensuite, une méthode d'extension pour obtenir facilement cette structure à partir d'une instance de 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
};
}
}
Utilisation
DateTime dt = DateTime.Now;
DateOnly result = dt.GetDateOnly();
utiliser .Date de l'objet DateTime ignore le temps de la partie.
voici le code:
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();
sortie:
>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
utiliser un peu de RegEx:
Regex.Match(Date.Now.ToString(), @"^.*?(?= )");
produit une date dans le format: JJ/mm / AAAA
Pour l'utilisation par les datalist, répéteur.. dans la page aspx:< % # Eval ("Yourdestring").ToString ().Supprimer (10) % >
cela pourrait être fait simplement de cette façon:
var dateOnly = new DateTime(dateTime.Year, dateTime.Month, dateTime.Day)
obtenir la Date
partie d'un DateTime
objet n'a pas fonctionné pour moi parce que je travaille du côté du client et les valeurs de service web retournés ont quelques null
dates. En conséquence, il essaie d'obtenir la Partie Date d'une valeur nulle et il lance une exception runtime. L'exemple suivant montre comment j'ai résolu mon problème:
string dt = employer.BirthDay.ToString();
if(dt == ""){ dt = "N/A";}
else dt = dt.Substring(0,10);
- récupérez la valeur DateTime en chaîne dans une variable string.
- vérifiez si c'est NULL. Si null, Assignez une variable string.
- si ce n'est pas nul, récupérez les 10 premiers caractères de la chaîne de caractères
DateTime
et assignez-la à la variable string.
je partage ceci pour référence future.
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();
}
Ce code vous donne une vue claire de l'écriture", 151910920" ainsi que Time
séparément
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);
Espérons que cette aide.