วิธีการแปลง DateTime เป็น / จากรูปแบบสตริงเฉพาะ (ทั้งสองวิธีเช่นกำหนด Format คือ "yyyyMMdd")


135

ฉันมีปัญหาในการแปลงวันที่และเวลาซึ่งอยู่ในรูปแบบสตริง แต่ฉันไม่สามารถแปลงโดยใช้"yyyyMMdd"รูปแบบได้

รหัสของฉันคือ:

string tpoc = refSubClaim.BenefitsFolder.BenefitFolderIdNumber.ToString();
string[] tpocinfo = Regex.Split(tpoc,";");

for (int i = 0; i < tpocinfo.Length; i++)
{
    switch (i)
    {
        case 0:
        {
            string[] tpoc2 = Regex.Split(tpocinfo[0], ",");
            claimantAuxillaryRecord.TPOCDate2 = tpoc2[0].ToString();
            claimantAuxillaryRecord.TPOCAmount2 = Convert.ToDecimal(tpoc2[1]);
            claimantAuxillaryRecord.FundingDelayedBeyondTPOCStartDate2 = tpoc2[2].ToString();
        }
        break;

ตอนนี้สตริงวันที่และเวลาอยู่ในรูปแบบใด
Falle1234

11
และความเกี่ยวข้องของข้อมูลโค้ดของคุณกับคำถามคืออะไร?
Darin Dimitrov

2
ฉันไม่ชัดเจนเล็กน้อย คุณกำลังทำงานกับการแสดงสตริงของวันที่หรือวัตถุ DateTime หรือไม่? สมมติว่ามันเป็นวัตถุ DateTime คุณก็สามารถโทรobj.ToString("yyyyMMdd");
Nathan Taylor

จริงๆแล้ว TPOCDate2 เป็นตัวแปรอยู่แล้วและฉันแค่ต้องการแปลงองค์ประกอบใน tpoc2 [0] ให้อยู่ในรูปแบบ yyyyMMdd หวังว่านี่จะตอบคำถามของคุณ
Ashutosh

คุณติดอยู่ที่ไหนสักแห่ง?
Dariusz Woźniak

คำตอบ:


226

หากคุณมีวันที่ในสตริงที่มีรูปแบบ "ddMMyyyy" และต้องการแปลงเป็น "yyyyMMdd" คุณสามารถทำได้ดังนี้:

DateTime dt = DateTime.ParseExact(dateString, "ddMMyyyy", 
                                  CultureInfo.InvariantCulture);
dt.ToString("yyyyMMdd");

4
ติดอยู่กับรหัสของคุณอันนี้ทำงานได้ดี DateTime.TryParse (stringValue ออก outputInDateTime);
DJ

65

วันที่แยกวิเคราะห์เวลา:

ในการแยกวิเคราะห์ DateTime ให้ใช้หนึ่งในวิธีต่อไปนี้:

หรือคุณอาจใช้รูปแบบการลองแยกวิเคราะห์ :

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

การแปลง DateTime เป็นสตริง:

ในการส่งคืน DateTime เป็นสตริงในรูปแบบ "yyyyMMdd" คุณอาจใช้ToStringวิธีการ

  • ตัวอย่างข้อมูลโค้ด: string date = DateTime.ToString("yyyyMMdd");
  • หมายเหตุบนดาดM 's อ้างถึงเดือนและลดดาด ' s นาที

กรณีของคุณ:

ในกรณีของคุณสมมติว่าคุณไม่ต้องการจัดการสถานการณ์เมื่อวันที่เป็นรูปแบบที่แตกต่างกันหรือผิดพลาดจะสะดวกที่สุดในการใช้ParseExact:

string dateToParse = "20170506";
DateTime parsedDate = DateTime.ParseExact(dateToParse, 
                                          "yyyyMMdd",
                                          CultureInfo.InvariantCulture);

7
นี่เป็นหัวข้อเก่า แต่สำหรับผู้ที่กำลังค้นหาลิงก์ด้านบน "รูปแบบเฉพาะวัฒนธรรม" ตอนนี้เป็นลิงก์ที่ไม่สามารถใช้งานได้ นี่คือสตริงรูปแบบวันที่และเวลาที่กำหนดเอง

40

คุณสามารถแปลงสตริงของคุณเป็นDateTimeค่าดังนี้:

DateTime date = DateTime.Parse(something);

คุณสามารถแปลงDateTimeค่าเป็นสตริงที่จัดรูปแบบดังนี้:

date.ToString("yyyyMMdd");

11

สตริงเป็นรูปแบบวันที่ yyyy-MM-dd: ตัวอย่าง:

TxtCalStDate.Text = Convert.ToDateTime(objItem["StartDate"]).ToString("yyyy/MM/dd");   

10

หากคุณต้องการให้DATEเป็นสตริงพร้อมTIMEด้วย เราสามารถทำได้ดังนี้

    //Date and Time is taking as current system Date-Time    
    DateTime.Now.ToString("yyyyMMdd-HHmmss");

7
นาทีควรจะเล็ก "ม"!? "yyyyMMdd-HHmmss"
CeOnSql

6

ใช้ DateTime.TryParseExact()หากคุณต้องการจับคู่กับรูปแบบวันที่ที่ระบุ

   string format = "yyyyMMdd"; 
    DateTime dateTime;
    DateTime.TryParseExact(dateString, format, CultureInfo.InvariantCulture,
                                             DateTimeStyles.None, out dateTime);

5

คุณสามารถใช้DateTime.TryParse()แทนDateTime.Parse().
ด้วยTryParse()คุณมีค่าตอบแทนถ้ามันประสบความสำเร็จและมีParse()คุณต้องจัดการกับข้อยกเว้น



3

ไม่มีสตริงที่มี yyyy / mm / dd และฉันต้องการมันในรูปแบบ yyyyMMdd

หากคุณต้องการเพียงแค่ลบเครื่องหมายทับออกจากสตริงคุณไม่เพียงแค่แทนที่มันหรือ

ตัวอย่าง:

myDateString = "2013/03/28";
myDateString = myDateString.Replace("/", "");

myDateString ควรเป็น "20130328"

น้อยเกินไป :)



2

ตามชื่อคุณสมบัติดูเหมือนว่าคุณกำลังพยายามแปลงสตริงเป็นวันที่โดยการกำหนด:

claimantAuxillaryRecord.TPOCDate2 = tpoc2[0].ToString();

อาจเป็นเพราะวัฒนธรรม UI ปัจจุบันดังนั้นจึงไม่สามารถตีความสตริงวันที่ได้อย่างถูกต้องเมื่อกำหนด


ไม่มีสตริงที่มี yyyy / mm / dd และฉันต้องการมันในรูปแบบ yyyyMMdd
Ashutosh

และในขณะที่ทำ ClaimantAuxillaryRecord.TPOCDate2 = tpoc2 [0] .ToString ("yyyyMMdd"); มันทำให้เกิดข้อผิดพลาดในการสร้าง วิธีการโอเวอร์โหลดที่ดีที่สุดตรงกับ 'string ToString (System.IFormatProvider)' มีข้อโต้แย้งที่ไม่ถูกต้อง
Ashutosh

@ แมท - จริงเหรอ? คุณแก้ไขคำตอบ 4 ปีขึ้นไปที่ไม่ได้ทำเครื่องหมายว่าเป็นคำตอบเพื่อเพิ่มแท็บใช่หรือไม่ นั่นเป็นกรณีที่ไม่ดีอย่างร้ายแรงของ OCD ที่คุณมี
ปีเตอร์


0

วิธีง่ายๆที่ฉันเจอในขณะที่ค้นหาคำตอบนี้เช่นกัน

string date = DateTime.Now.ToString("yyyyMMdd", System.Globalization.CultureInfo.GetCultureInfo("en-US"));

ฉันมีค่าสำหรับDateTime? ชอบ DateTime newDate = DateTime.Parse(Session["date"].ToString());?
WTFZane

0

คุณสามารถลองใช้รหัสเหล่านี้

claimantAuxillaryRecord.TPOCDate2  = Convert.ToDateTime(tpoc2[0]).ToString("yyyyMMdd"); 

หรือ

claimantAuxillaryRecord.TPOCDate2 = Convert.ToDateTime(tpoc2[0]).ToString("yyyyMMdd hh:mm:ss"); 

1
สำหรับความรักของพระเจ้า (Harambe ผู้ช่วยให้รอดของเรา) อย่าใช้ Convert ToDateTime ... สิ่งนี้ช้ามาก (~ 100ms)! เพียงใช้ ParseExact หรือ TryParse - waaaaay เร็วขึ้น !!!
Koshera
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.