tại sao DateTime.ToString (thời gian dd / MM / yyyy) cho tôi dd-MM-yyyy?


155

Tôi muốn datetime của tôi được chuyển đổi thành một chuỗi có định dạng "dd / MM / yyyy"

Bất cứ khi nào tôi chuyển đổi nó bằng cách sử dụng DateTime.ToString("dd/MM/yyyy"), tôi nhận được dd-MM-yyyythay thế.

Có một số loại thông tin văn hóa mà tôi phải thiết lập?


làm DateTime.ToString ("dd / MM / yyyy");
jimplode

2
Tôi đã làm điều đó, nó không hoạt động, vấn đề không phải là ngày, đó là "-", tôi muốn nó là "/" như tôi đã chỉ định
Diskdrive

7
sử dụng MM thay vì mm - mm đại diện cho phút và không phải tháng.
Lloyd Powell


Các tài liệu MSDN cho DateTime.ToString là vô vọng sai: " Ví dụ,‘MM / dd / yyyyHH:’chuỗi hiển thị định dạng ngày tháng và thời gian chuỗi trong một định dạng cố định ... Việc sử dụng chuỗi định dạng‘mm /’như một cố định dấu phân cách ngày bất kể cài đặt dành riêng cho văn hóa. "
Đại tá Panic

Câu trả lời:


243

Dấu gạch chéo là một dấu phân cách ngày, do đó sẽ sử dụng dấu phân cách ngày văn hóa hiện tại.

Nếu bạn muốn mã hóa cứng để luôn sử dụng dấu gạch chéo, bạn có thể làm một cái gì đó như thế này:

DateTime.ToString("dd'/'MM'/'yyyy")

2
@spender - Trong một số nền văn hóa họ đang có.
Daniel A. White

Cảm ơn câu trả lời nhanh của bạn. Bạn đúng rồi. Tôi sẽ cho bạn câu trả lời chính xác
Diskdrive

6
Bạn cũng có thể sử dụng định dạng này: dateTime.ToString (@ "yyyy \ / MM \ / dd")
base2


2
Thoát chuỗi định dạng bằng dấu gạch chéo ngược cũng hoạt động: DateTime.Now.ToString ("dd \\ / MM \\ / yyyy");
TomB

61

Vượt qua CultureInfo.InvariantCARM làm tham số thứ hai của DateTime, nó sẽ trả về chuỗi như bạn muốn, thậm chí là một định dạng rất đặc biệt:

DateTime.Now.ToString("dd|MM|yyyy", CultureInfo.InvariantCulture)

sẽ trở lại: 28 | 02 | 2014


Mã này rõ ràng hơn so với câu trả lời được chấp nhận (ý tôi là đã thêm CultureInfo). Nó trông ít nhất là tốt hơn thoát khỏi dấu gạch chéo bởi dấu nháy đơn.
Sergey

2
Chắc chắn dễ đọc hơn sử dụng các ký tự thoát. Tôi hơi sốc khi tôi không biết toàn bộ định dạng ngày tháng của mình sẽ bị ghi đè!
Savage

10

Thêm CultureInfo.InvariantCulturelàm đối số:

using System.Globalization;

...

var dateTime = new DateTime(2016,8,16);
dateTime.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);

Sẽ trở lại:

"16/08/2016"

nếu nhà phát triển sử dụng phương thức chuỗi với một số chữ cái như M m ss, v.v. sẽ nhận kết quả sai với giải pháp của bạn, ví dụ như Datetime.Now.ToString ("yyyy / dd / mm / Tháng", CultureInfo.InvariantCocate) sẽ không có kết quả 2017/01 / 02 / Tháng sẽ có kết quả 2017/01/02/2 tháng
Okan SARICA

@OkanSARICA nếu bạn muốn có hậu tố với ngày / Tháng thì bạn nên làm điều đó sau phương thức ToString. DateTime.Now.ToString (Hồi yyyy / MM / dd, Văn hóa văn hóa
Mikael Engver

1

Nếu bạn sử dụng MVC, bảng, nó hoạt động như thế này:

<td>@(((DateTime)detalle.fec).ToString("dd'/'MM'/'yyyy"))</td>

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.