web-dev-qa-db-ja.com

DateTimeオブジェクトのみでC#の日付の時刻部分を削除する方法

日付時刻の時刻部分を削除するか、おそらく次の形式の日付をobjectの形式ではなくstringの形式にする必要があります。

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

string形式の日付が必要なので、object変換メソッドは使用できません。

最初にDateTimestringに変換して、それから時間指定の日付を削除しようとしましたが、再びDateTimeobjectに戻すとすぐに12:00:00 AMが追加されます。

383
im useless

日付 プロパティを使用します。

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

date変数は日付を含み、時間部分は00:00:00になります。

713
driis

フォーマット文字列を使用して、出力文字列に好きなフォーマットを付けることができます。

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

もっと読む ここ

135
0x49D1

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
96
Adriano Silva

DateTime.Date プロパティを見てください。

このインスタンスの日付コンポーネントを取得します。

36
Nick

Dateプロパティは真夜中の日付を返します。

1つの選択肢は、個々の値(日/月/年)を別々に取得して、それを必要なタイプに格納することです。

var dateAndTime = DateTime.Now; 
int year = dateAndTime.Year;
int month = dateAndTime.Month;
int day = dateAndTime.Day;

string.Format("{0}/{1}/{2}", month, day, year);
28
sidprasher

上記の答えのどれもWinformsの私の問題を解決しなかった。

_ only _ dateに到達する最も簡単な方法は、Datetimeの単純な関数です。

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

あなたは誕生日文字列の日付だけを持つでしょう。

19
MehraD

できません。 .NETのDateTimeには常に時間があり、デフォルトは00:00:00:000です。 DateTimeのDateプロパティもDateTime(!)なので、デフォルトでは00:00:00:000にもなります。

これは.NET Frameworkの不足であり、.NETのDateTimeは 単一責任原則 に違反していると主張できます。

14
Tomas Vinter

そのためにあなた自身の構造を作ってみてください。 DateTimeオブジェクトは日付と時刻の両方を持ちます

14
Umesh CHILAKA
11
VikciaR

これは 別の方法です 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

これはDate Timeがデータベースに保存されている場合にも機能します。

その他の日付と時刻の形式については、以下のリンクを確認してください。

参考文献1

参考文献2

希望が役立ちます。

10
stom

この方法は時間なしで日付のみを取得する

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

出力= 2015年5月16日

7
Mayank Gupta

私は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%でない場合は申し訳ありません。

5
Matt Wilko

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
4
Nathanael Mayne

誰もDateTime.Todayについて言及していないのは私は驚きです。

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

_ msdn _ を参照してください。

4
LukeF

元のQを解決しようとしたときにこの記事に出くわした.

Asp.Netを使用していますが、コードビハインドで日付の値にバインドしているときに確認した調査の結果、画面に表示されないように時間を減らすことができます。

C#:

DateTime Today = DateTime.Now;

aspx:

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

あなたはDatetimeから唯一の日付のためにこれを試すことができます

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

DtはDateTimeです

3
Vikas

つかいます

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

あなたがそれを文字列に変換しているなら、あなたは簡単にこれのようにそれをすることができます。

私はあなたのDateTimeオブジェクトとして日付を取っています。

date.ToString("d");

これはあなたに日付だけを与えるでしょう。

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

カレンダーから日付を取得する場合、これにより時間も取得できます。常に必要なわけではありません。これを使用して、日付から時間を削除できます。

2
hizbul25

私はこれが多くの答えがある古い投稿であることを知っています、しかし私は時間部分を削除するこの方法を見たことがありません。 DateTimeという名前のmyDate変数があり、日付と時刻の部分があるとします。このコンストラクタを使用して、時間部分なしで、そこから新しいDateTimeオブジェクトを作成できます。

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

このような:

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

このようにして、時間部分として00:00:00を使用して、古いオブジェクトに基づいて新しいDateTimeオブジェクトを作成します。

私の経験では、上記の解決策はどれもうまくいきませんでした。おそらく、データベースから抽出された日付から時間を削除したいのですが、以下のコードはうまくいきました。

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

変数を文字列として宣言します。

例:

public string dateOfBirth ;

その後、次のような値を割り当てます。

dateOfBirth = ((DateTime)(datetimevaluefromDB)).ToShortDateString();
2
Saud Khan

必要なプロパティだけを保持する構造体を作成してください。次に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();
2
mason
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();
}
1
ImranNaqvi

データリスト、リピータなどでaspxページで使用する場合:<%#Eval( "YourDateString")。ToString()。削除(10)%>

1
Filip Dialm

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
1
Jota

DateオブジェクトのDateTime部分を取得するのは私にとってはうまくいきませんでした。クライアントサイドで作業していて、返されるWebサービス値にはnullの日付がいくつかあるからです。結果として、null値のDate部分を取得しようとし、ランタイム例外をスローします。次の例は、私が問題を解決した方法です。

string dt = employer.BirthDay.ToString();
if(dt == ""){ dt = "N/A";}
else dt = dt.Substring(0,10);
  1. DateTime値を文字列として文字列変数に取得します。
  2. Nullかどうかを確認してください。 nullの場合、文字列変数を割り当てます。
  3. Nullでない場合は、文字列DateTimeの値の最初の10文字を取得し、それを文字列変数に割り当てます。

私はこれを将来の参考のために共有しています。

1
apollo

RegExを少し使います。

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

Dd/mm/yyyyの形式で日付を作成します。

1
DividedByZero

これは簡単にこうすることができます:

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

このコードはDateTimeを別々に書くことの明確な見方をあなたに与えます

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

お役に立てれば。

1
Zero

あなたがバインディングを使用し、時間なしで日付の部分だけを表示したい場合

ToolTip = "{バインディングトランザクションモデル。トランザクション日付、文字列フォーマット= d}"

0
Kovalenko Ihor

これを試してみてください。もしあなたがDateTimeOffsetを使うのであれば、それはタイムゾーンの面倒を見るでしょう。

date1 = date1.LocalDateTime.Date;

時間を追加する必要がある場合は、これを使用してください。

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

私はあなたがこれをすると思います:DateTime onlyDate = DateTime.Today.Date;または、それは同じDateTime onlyDate = yourDateTime.Dateです。そのため、プロパティDateを使用してください。

0
Carmine Checker

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

0
Na'il Laith
DateTime dd=DateTiem.Now;
string date=dd.toString("dd/MM/YYYY");
0
James

1行のコードを使用するだけです。

var dateAndTime = DateTime.Now.Date;
0
NinjaCoder

日付部分だけを取得するには、ToString()メソッドを使用します。

例:DateTime.Now.Date.ToString( "dd/MM/yyyy")

注:dd/MM/yyyy形式のmmは大文字にする必要があります

0
nate.py