datetime.parse และทำให้ทำงานกับรูปแบบเฉพาะ


141

ฉันมีวันที่และเวลากลับมาจากไฟล์ XML ในรูปแบบ:

20080916 11:02

เช่นเดียวกับใน

yyyymm hh: ss

ฉันจะรับฟังก์ชัน datetime.parse เพื่อรับสิ่งนี้ได้อย่างไร คือแยกวิเคราะห์มันโดยไม่มีข้อผิดพลาด? ไชโย

คำตอบ:


246
DateTime.ParseExact(input,"yyyyMMdd HH:mm",null);

สมมติว่าคุณตั้งใจจะบอกว่านาทีตามชั่วโมงไม่ใช่วินาที - ตัวอย่างของคุณค่อนข้างสับสน

เอกสาร ParseExactรายละเอียด overloads อื่น ๆ ในกรณีที่คุณต้องการที่จะมีการแยกวิเคราะห์โดยอัตโนมัติแปลงเป็นเวลามาตรฐานสากลหรือสิ่งที่ต้องการ

ตามที่ @ Joel Coehoornกล่าวถึงก็มีตัวเลือกในการใช้TryParseExactซึ่งจะส่งคืนค่าบูลีนที่แสดงถึงความสำเร็จหรือความล้มเหลวของการดำเนินการ - ฉันยังคงใช้งาน. Net 1.1 อยู่บ่อยครั้งดังนั้นฉันจึงลืมสิ่งนี้

หากคุณต้องการแยกวิเคราะห์รูปแบบอื่น ๆ คุณสามารถตรวจสอบสตริงรูปแบบวันที่และเวลามาตรฐานได้


11
อย่าลืม DateTime.TryParseExact ()
Joel Coehoorn

นอกจากนี้: มาตรฐาน Xml มีรูปแบบ DateTime เฉพาะของตัวเองและเครื่องมือ. Net Xml ควรอ่านได้
Joel Coehoorn

ในกรณีนี้มันใช้งานได้ดีกับพารามิเตอร์สุดท้ายเป็นโมฆะ แต่สำหรับทุกคนที่พบว่า CultureInfo.InvariantCulture นี้ไม่เช่นนั้นคุณจะพบปัญหาหากวันที่และเวลาของคุณเป็นแบบ "1823/01/01"
Todilo

@JoelCoehoorn standard XML specific DateTime format?
Kiquenet

10

ขอบคุณสำหรับเคล็ดลับฉันใช้สิ่งนี้เพื่อรับวันที่ "20071122" แยกวิเคราะห์ฉันต้องการเพิ่ม datetimestyles ฉันใช้ไม่ได้เลยและใช้งานได้:

DateTime dt = DateTime.MinValue;

DateTime.TryParseExact("20071122", "yyyyMMdd", null,System.Globalization.DateTimeStyles.None, out dt);
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.