วิธีการลบส่วนเวลาของวันที่ใน C # ในวัตถุ DateTime เท่านั้น?


458

ฉันจำเป็นต้องเอาส่วนที่เป็นเวลาของวันเวลาหรืออาจจะมีวันที่ในรูปแบบต่อไปนี้ในรูปแบบที่ไม่ได้อยู่ในรูปแบบของobjectstring

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

ฉันไม่สามารถใช้stringวิธีการแปลงใด ๆ ได้เนื่องจากฉันต้องการวันที่ในobjectรูปแบบ

ฉันพยายามแปลงDateTimea เป็นครั้งแรกให้stringลบวันที่ที่ระบุเวลาออกจาก แต่จะเพิ่ม12:00:00 AMทันทีที่ฉันแปลงกลับเป็นDateTime objectกลับมาอีกครั้ง


10
ไม่มีคลาส / โครงสร้างแบบวันที่เท่านั้นใน C # ถ้าคุณต้องการมีคุณต้องเพิ่มคลาส / โครงสร้างของคุณเอง
oleschri

12
เพียงใช้ DateTime.Now.ToShortDateString ()
Mohammad Shahnawaz Alam

@ ShahnawazAalam ฉันเชื่อว่ามันยังคงเป็นสตริงฉันมีปัญหากับวันที่และเวลา ต้องการเฉพาะวันที่จากตัวแปร

ดูคำตอบนี้ซึ่งอธิบายทางเลือก
Matt Johnson-Pint

var dateTime = DateTime.Now.Date;
PrathapG

คำตอบ:


826

ใช้คุณสมบัติวันที่ :

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

ตัวแปรจะมีวันที่เวลาส่วนหนึ่งจะเป็นdate00:00:00


36
ส่วนเวลาจะเป็นเวลา 12:00:00 น. ตามที่ผู้ถามระบุไว้หรือไม่?
FIre Panda

13
ส่วนเวลาเป็นศูนย์ (เที่ยงคืน) เมื่อสิ่งนี้ถูกจัดรูปแบบเป็นสตริงโดยใช้รูปแบบ AM / PM สิ่งนี้จะแสดงเป็น 12 AM
driis

98
นี่ไม่ได้ตอบคำถาม เป็นคำตอบที่แนะนำ DateTime วันที่ (ซึ่งเป็น DateTime มันเอง!) มีส่วนเวลาเริ่มต้นถึง 00:00:00 แอชเวอร์ควรจะเป็น: ด้วย DateTime คุณไม่สามารถทำได้ สร้างโครงสร้างของคุณเองหรือดู Noda Time
Tomas Vinter

23
@TomasVinter ถูกต้อง ไม่มีโครงสร้าง "เคร่งครัดวัน" ใน. NET Framework คุณจะต้องสร้างของคุณเอง อย่างไรก็ตาม DateTime จะเปิดเผยเมธอด. ToShortDateTime () ซึ่งจะจัดรูปแบบสตริงที่แสดงเฉพาะส่วนวันที่ของค่าและจะจัดรูปแบบวันที่โดยใช้ DateFormat ที่กำหนดค่าในวัฒนธรรมปัจจุบัน (Thread.Current.CurrentCulture) ดังนั้น MM-dd -yyy สำหรับสหรัฐอเมริกา dd-MMM-yyyy สำหรับ EU ฯลฯ
Michael J. Heier

16
สำหรับผู้ที่กล่าวว่านี่ไม่ใช่คำตอบที่ถูกต้อง: คำตอบนั้นถูกต้อง แต่คำถามนั้นผิด จะแสดงความไม่รู้ของคำถามของเรื่อง ไม่มีรูปแบบสำหรับวันที่ที่จะมีในรูปแบบวัตถุ รูปแบบมีความหมายเฉพาะเมื่อแปลงเป็นสตริง สิ่งที่เก็บไว้ในวัตถุของเขาไม่ได้เป็นจริง06/26/2009 00:00:00.000แต่63381571200000000เป็นจำนวนของ Ticks DateTime.MinValue(1/100000000 ต่อวินาที) ตั้งแต่(01/01/0001) หากคุณกำลังจะแสดงวันที่แล้วแปลงเป็นสตริงมิฉะนั้นจะมีองค์ประกอบเวลาเที่ยงคืน จัดการกับมัน
CptRobby

165

คุณสามารถใช้สตริงรูปแบบเพื่อกำหนดรูปแบบที่คุณต้องการ

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

อ่านเพิ่มเติมเกี่ยวกับวันที่กำหนดเองและสตริงรูปแบบเวลา


48
DateAndTime.ToShortDateString ();
John Peters

ฉันต้องการสิ่งนี้ แต่เคยCultureInfo.DateTimeFormat.ShortDatePatternเป็นมิตรกับผู้ใช้
Dzmitry Lahoda

สิ่งนี้จะให้ผลลัพธ์ที่ไม่ถูกต้องบนโลแคลที่ไม่ใช้รูปแบบนี้ ดีกว่าที่จะใช้ ToShortDateString ซึ่งเป็นสถานที่เกิดเหตุ
Matt Wilko

1
ตรวจสอบให้แน่ใจว่าคุณอัพเดตรูปแบบdd/MM/yyyyเป็นสิ่งที่คุณต้องการก่อนใช้!
slayernoah

.ToString()ด้วยรูปแบบที่ต้องการเป็นสิ่งที่ฉันต้องการขอบคุณ!
วิลเล็มเอลลิส

108

ใช้วิธีการ 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

2
ToShortDateStringไม่ใช้IFormatProvider: /
Muflix

ในกรณีของฉันมันส่งคืน 00.00.0000 ไม่ใช่ 00/00/0000
bside

39

ลองดูที่คุณสมบัติDateTime.Date

รับส่วนประกอบวันที่ของอินสแตนซ์นี้


20
คุณควรอธิบายเพิ่มเติมนี่ไม่ใช่คำตอบนี่คือลิงค์
Malachi

27
@Malachi: ฉันได้คัดลอกและวางบรรทัดแรกจาก API ทางการที่เชื่อมโยงแล้วในกรณีที่คนไม่เข้าใจการเชื่อมโยงหลายมิติ
Nick

var dateTime = DateTime.Now.Date;
PrathapG

29

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

20

ไม่มีคำตอบข้างต้นแก้ปัญหาของฉันใน winforms

วิธีที่ง่ายที่สุดในการเข้าถึงวันที่เท่านั้นคือฟังก์ชั่นที่ง่ายใน Datetime

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

คุณจะมีวันที่ในสตริงวันเกิดเท่านั้น


4
ทำไมถึงมี(string)นักแสดง? ชนิดที่ส่งคืนโดยToShortDateStringแน่นอนเป็นสตริง
Askolein

15

ลองสร้างโครงสร้างของคุณเองดู วัตถุ DateTime จะมีวันที่และเวลาทั้งคู่


3
นี่ควรเป็นคำตอบ ดูเหมือนจะเป็นคำตอบเดียวสำหรับคำถามจริง - เวลาไม่สามารถลบออกจากวัตถุได้ ใช้ชีวิตอยู่กับเที่ยงคืน (หรือช่วงเวลาของวัน) หรือทำงานกับ ToString ที่เป็นตัวแทนของสิ่งที่คุณต้องการ
Phil Cooper

นี่อาจเป็นคำตอบที่ถูกต้องที่สุด แต่ก็เป็นวิชาการอย่างสมบูรณ์สำหรับทุกคนยกเว้นผู้ที่ไม่มีชีวิตผู้ที่ชื่นชอบการสร้างวงล้อที่เปลี่ยนได้เอง หากเรากังวลเกี่ยวกับหน่วยความจำที่เพิ่มซึ่งใช้ในการจัดเก็บคุณสมบัติแบบยาวเพิ่มเติมด้วยโครงสร้าง DateTime ของเราเรามีปัญหาที่ใหญ่กว่าไม่สนใจมัน
iGanja

ขอบคุณสำหรับคำตอบ. โดยไม่ต้องสร้างโครงสร้างผู้ใช้สามารถใช้ตัวแปรสตริงในกรณีส่วนใหญ่ คุณคิดอย่างไร?
Kushan Randima

@ KushanRandima นี้เป็นจริงในกรณีส่วนใหญ่ อย่างไรก็ตามในคำถามที่ผู้ใช้ไม่ต้องการในรูปแบบสตริงดังนั้นฉันแนะนำสิ่งนี้เป็นหนึ่งในทางเลือก
Umesh CHILAKA

15

คุณทำไม่ได้ DateTime ใน. NET มักจะมีเวลาโดยค่าเริ่มต้นเป็น 00: 00: 00: 000 คุณสมบัติวันที่ของ DateTime ยังเป็น DateTime (!) ดังนั้นจึงมีเวลาเริ่มต้นเป็น 00: 00: 00: 000 เช่นกัน

นี่คือปัญหาการขาดแคลนใน .NET Framework และมันอาจจะแย้งว่า DateTime ใน .NET ละเมิดความรับผิดชอบต่อหลักการเดี่ยว


นี่คือคำตอบที่ถูกต้องสำหรับคำถามนี้ วัตถุ DateTime จะมีเวลาเสมอ
Drkawashima

1
ทำไมคุณถึงคิดว่านี่เป็นการละเมิด SRP หากคุณพิจารณาความรับผิดชอบแสดงจุดเวลาและคลาส exposes คุณสมบัติ Ticks ต้นแบบคุณสมบัติปี / ชั่วโมง / มิลลิวินาทีมีอย่างหมดจดเพื่อจัดการกับการประชุม (หลัก)
Rob Church

เนื่องจากวันที่และเวลาเป็นแนวคิดที่แตกต่างกันสองอย่างน่าเสียดายที่ใน. NET Framework ที่รวมอยู่ในโครงสร้างเดียวกัน ดังนั้นโครงสร้างมีความรับผิดชอบมากกว่าหนึ่ง (จัดการทั้งวันที่และเวลา) และดังนั้นจึงเป็นการละเมิด SRP DateTime ใน. NET ไม่ได้เป็นเพียงจุดเวลาเท่านั้น แต่ยังรวมถึงสิ่งอื่น ๆ อีกมากมาย ดังนั้นการพิจารณาว่ามันเป็นความรับผิดชอบที่จะแสดงจุดเวลาเท่านั้นจะแปลก
Tomas Vinter

2
จุดในเวลาจะถูกแทนด้วยวันที่และเวลา หากคุณบอกใครสักคนเพื่อพบคุณในเวลา 13.00 น. คุณกำลังคาดเดาอย่างมากว่าบุคคลนั้นรู้วันใด แม้ว่าวันนี้เป็นวันที่ แต่ความแม่นยำก็บอกได้อย่างชัดเจน Ergo ค่าเดียวที่แสดงถึงจุดในเวลาที่มีความแม่นยำใด ๆ ต้องมีทั้งวันที่และเวลาโดยใช้จุดเริ่มต้นอ้างอิง ดังนั้นวันที่จากการอ้างอิงเริ่มต้นและเวลาจากการอ้างอิงเริ่มต้นมีความชัดเจนแนวคิดเดียวกัน เวลาเพิ่มความแม่นยำเพิ่มเติม
iGanja

1
เวลาคนเดียวมีประโยชน์เมื่อคุณกำลังพูดถึงอินสแตนซ์ต่าง ๆ : เช่นทุกวันเวลาเที่ยงคืน UTC; ในวันแรกของทุกเดือนในเวลาท้องถิ่น เป็นต้นว่า TimeSpan สามารถใช้เพื่อแสดงว่าผ่านการประชุม แต่มันอาจจะสะอาดกว่าที่จะมีวัตถุ Time ที่แสดงถึงจุดภายในระยะเวลา 24 ชั่วโมงและเขตเวลา ท้ายที่สุดมี 3 แนวคิดที่ DateTime สรุปคือวันที่เวลาและเขตเวลา
David Beckman

12

DateTime.Date

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

9
คุณควรอธิบายเพิ่มเติม นี่ไม่ใช่คำตอบมันเป็นลิงค์
Malachi

2
var newDate = DateTime.Now; //newDate.Date property เป็นส่วนของ date ของ DateTime ไม่มีความชัดเจนอะไร หากไม่ชัดเจน - ตามลิงค์
VikciaR

10

นี่คือวิธีการอื่นที่ใช้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

สิ่งนี้จะทำงานหากเก็บวันที่เวลาไว้ในฐานข้อมูล

สำหรับการจัดรูปแบบวันที่และเวลาเพิ่มเติมให้ตรวจสอบลิงก์เหล่านี้:

การอ้างอิง 1

การอ้างอิง 2

หวังว่าจะช่วย


OP ระบุอย่างชัดเจนว่า "ฉันไม่สามารถใช้วิธีการแปลงสตริงใด ๆ ได้เนื่องจากฉันต้องการวันที่ในรูปแบบวัตถุ"
ChrisF

7

วิธีการรับวันที่เท่านั้นโดยไม่ต้องเวลานี้

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

เอาท์พุท = 5/16/2015


1
โปรดพิจารณาว่าคำตอบล่าช้ามีมูลค่าเพิ่ม (และจากมุมมองของผู้ใช้ upvote) ถ้ามันแตกต่างจากคำตอบอื่นอย่างชัดเจน นี่ไม่ใช่กรณีอะไร
m.cekiera

5

ฉันเขียน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

ใช้ 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

ฉันประหลาดใจที่ไม่มีใครพูดถึง DateTime ในวันนี้

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

ดูMSDN


+1 เพียงเพราะคำตอบของคุณสร้างวันที่ด้วยคุณสมบัติที่ถูกต้องอย่างไรก็ตาม OP ต้องการลบเวลาออกจากวันที่ที่มีอยู่ไม่ใช่สร้างวันที่ใหม่
iGanja

3

คุณสามารถลองสิ่งนี้ได้ในวันที่เดียวจากวันที่และเวลา

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

โดยที่ dt คือ DateTime


3

เข้ามาโพสต์นี้เมื่อพยายามที่จะแก้ต้นฉบับ

ฉันกำลังใช้ Asp.Net และหลังจากการวิจัยบางอย่างที่ฉันพบเมื่อคุณผูกพันกับค่าของวันที่ในโค้ดด้านหลังคุณสามารถปล่อยเวลาเพื่อที่จะไม่แสดงบนหน้าจอ

ค#:

DateTime Today = DateTime.Now;

aspx:

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



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

หากคุณใช้วันที่จากปฏิทินเราก็มีเวลา ซึ่งไม่จำเป็นตลอดเวลา ใช้สิ่งนี้เราสามารถลบเวลาจากวันที่


2

จากประสบการณ์ของฉันไม่มีวิธีการแก้ปัญหาที่กล่าวมาอาจเป็นเพราะฉันต้องการลบเวลาจากวันที่ที่ดึงข้อมูลออกจากฐานข้อมูล แต่รหัสด้านล่างใช้ได้ดี:

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

คำถามระบุไว้โดยเฉพาะว่าวันที่จำเป็นต้องเป็นวัตถุไม่ใช่สตริง โซลูชันนี้ส่งคืนสตริง
saluce

2

ประกาศตัวแปรเป็นสตริง

ตัวอย่าง:

public string dateOfBirth ;

จากนั้นกำหนดค่าเช่น:

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

คนควรอ่านคำถามและหยุดการแปลง structs (บนสแต็ค) เป็นวัตถุ (บนกอง) โดยไม่มีเหตุผล
iGanja

2

ฉันรู้ว่านี่เป็นโพสต์เก่าที่มีคำตอบมากมาย แต่ฉันไม่ได้เห็นวิธีการลบส่วนเวลานี้ สมมติว่าคุณมีDateTimeตัวแปรที่เรียกว่าmyDateพร้อมกับวันที่มีส่วนเวลา คุณสามารถสร้างDateTimeวัตถุใหม่จากมันโดยไม่มีส่วนเวลาโดยใช้ตัวสร้างนี้:

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

แบบนี้:

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

วิธีนี้คุณจะสร้างDateTimeวัตถุใหม่ตามวัตถุเก่าโดยมีเวลา 00:00:00


2

สร้างโครงสร้างที่เก็บเฉพาะคุณสมบัติที่คุณต้องการ จากนั้นวิธีการขยายเพื่อให้รับโครงสร้างนั้นจากอินสแตนซ์ของ 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

ในการรับเฉพาะส่วนวันที่ให้ใช้วิธี ToString ()

ตัวอย่าง: DateTime.Now.Date.ToString ("dd / MM / yyyy")

หมายเหตุ: มม. ในรูปแบบ dd / MM / yyyy ต้องเป็นตัวพิมพ์ใหญ่


1

ใช้. Date ของวัตถุ 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



1
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

รหัสนี้ให้มุมมองที่ชัดเจนในการเขียน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);

หวังว่านี่จะช่วยได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.