หลังจากขุดบางอย่างและฉันจบลงด้วยการตั้งค่าThread
's CurrentCultureคุ้มค่าที่จะมีCultureInfo ( 'en-US')ในวิธีการดำเนินการของตัวควบคุม:
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US")
ต่อไปนี้เป็นตัวเลือกอื่น ๆหากคุณต้องการให้มีการตั้งค่านี้ในทุกมุมมอง
เกี่ยวกับCurrentCulture
มูลค่าทรัพย์สิน:
ข้อมูลวัฒนธรรมวัตถุที่ถูกส่งกลับโดยคุณสมบัตินี้พร้อมกับวัตถุที่เกี่ยวข้องได้ตรวจสอบรูปแบบเริ่มต้นสำหรับวันเวลา, ตัวเลข, ค่าของสกุลเงินเรียงลำดับของข้อความประชุมปลอกและการเปรียบเทียบสตริง
ที่มา: MSDN CurrentCulture
หมายเหตุ: การCurrentCulture
ตั้งค่าคุณสมบัติก่อนหน้านี้อาจเป็นทางเลือกหากตัวควบคุมทำงานอยู่แล้วCultureInfo("en-US")
หรือใกล้เคียงกับรูปแบบวันที่"MM/dd/yyyy"
กันหรือคล้ายกันที่รูปแบบวันที่เป็น
หลังจากตั้งค่าCurrentCulture
คุณสมบัติแล้วให้เพิ่มบล็อกโค้ดเพื่อแปลงวันที่เป็น"M/d/yyyy"
รูปแบบในมุมมอง:
@{
var shortDateLocalFormat = "";
if (Model.AuditDate.HasValue) {
shortDateLocalFormat = ((DateTime)Model.AuditDate).ToString("M/d/yyyy");
}
}
@shortDateLocalFormat
เหนือ@shortDateLocalFormat
ตัวแปรมีการจัดรูปแบบด้วยToString("M/d/yyyy")
ผลงาน หากToString("MM/dd/yyyy")
ถูกนำมาใช้เช่นผมก่อนแล้วคุณท้ายมีชั้นนำปัญหาศูนย์ เช่นเดียวกับที่แนะนำโดยTommy ToString("d")
works เช่นกัน จริงๆแล้ว"d"
ย่อมาจาก“ Short date pattern”และสามารถใช้กับรูปแบบวัฒนธรรม / ภาษาที่แตกต่างกันได้เช่นกัน
ฉันเดาว่าบล็อกโค้ดจากด้านบนสามารถแทนที่ด้วยวิธีการช่วยเหลือที่ยอดเยี่ยมหรือคล้ายกัน
ตัวอย่างเช่น
@helper DateFormatter(object date)
{
var shortDateLocalFormat = "";
if (date != null) {
shortDateLocalFormat = ((DateTime)date).ToString("M/d/yyyy");
}
@shortDateLocalFormat
}
สามารถใช้กับการโทรตัวช่วยนี้ได้
@DateFormatter(Model.AuditDate)
ปรับปรุงผมพบว่ามีทางเลือกของการทำในสิ่งเดียวกันเมื่อDateTime.ToString (String, IFormatProvider)วิธีการที่ใช้ เมื่อวิธีการนี้ถูกนำมาใช้แล้วมีความจำเป็นต้องใช้Thread
ของCurrentCulture
สถานที่ให้บริการ CultureInfo("en-US")
จะถูกส่งเป็นอาร์กิวเมนต์ที่สอง -> IFormatProviderไปDateTime.ToString(String, IFormatProvider)
วิธีการ
วิธีแก้ไขตัวช่วย:
@helper DateFormatter(object date)
{
var shortDateLocalFormat = "";
if (date != null) {
shortDateLocalFormat = ((DateTime)date).ToString("d", new System.Globalization.CultureInfo("en-US"));
}
@shortDateLocalFormat
}
.NET ซอ
No overload for method 'ToString' takes 1 arguments