ในขณะที่คุณสามารถใช้Valueคุณสมบัติได้โดยตรงตามคำตอบของ Leszek ฉันอาจใช้ตัวดำเนินการแบบมีเงื่อนไขร่วมกับตัวดำเนินการ null-coalescing:
string dateInUTCString =
date?.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.fffZ", CultureInfo.InvariantCulture)
?? "";
นี่?.จะส่งผลให้มีค่าว่างถ้าdateเป็นโมฆะและ??ผู้ประกอบการจะให้ค่าเริ่มต้นหากผลลัพธ์ของการdate?.ToUniversalTime().ToString(...)โทรเป็นโมฆะ (ซึ่งจะเกิดขึ้นหากdateเป็นโมฆะ) เท่านั้น
โปรดทราบว่าคุณต้องการระบุวัฒนธรรมที่ไม่เปลี่ยนแปลงเพื่อหลีกเลี่ยงการได้รับผลลัพธ์ที่ไม่คาดคิดเมื่อวัฒนธรรมของเธรดปัจจุบันไม่ได้ใช้ปฏิทินแบบคริสต์ศักราชและคุณไม่จำเป็นต้องอ้างถึงตัวอักษรทั้งหมดในสตริงรูปแบบ มันทำงานได้ดีเมื่อคุณทำเช่นนั้น แต่มันยากที่จะอ่าน IMO
หากคุณไม่สนใจว่าจะแสดงความแม่นยำเท่าใดในสตริงคุณสามารถทำให้โค้ดง่ายขึ้นโดยใช้สตริงรูปแบบมาตรฐาน "O" :
string dateInUTCString = date?.ToUniversalTime().ToString("O") ?? "";
ณ จุดนี้คุณไม่จำเป็นต้องระบุCultureInfo.InvariantCultureว่า"O" ถูกใช้งานเสมอ
.ToString("o")?