2013-04-08 18 views
18

tôi đang cố gắng để có được ngày todays ở định dạng GBR nhưng,DateTime.Today.ToString ("dd/mm/yyyy") trả về không hợp lệ DateTime Value

DateTime.Now.ToString("dd/mm/yyyy"); 

lợi nhuận với giá trị của 08/00/2013

Vì vậy, 00 trong nhóm tháng đã được trả lại thay vì trả lại tháng 04.

Mọi ý tưởng tại sao điều này xảy ra?

+0

Làm việc tốt cho tôi? – DGibbs

+1

dường như nó phải là MM. mm đang trả về phút. – Xerxes

+1

@DGibbs Nó không nên! – JMK

Trả lời

35

hạ mm nghĩa phút, do đó

DateTime.Now.ToString("dd/MM/yyyy"); 

hoặc

DateTime.Now.ToString("d"); 

hoặc

DateTime.Now.ToShortDateString() 

works.

Standard Date and Time Format Strings

+2

Về người cố gắng chỉnh sửa câu trả lời của tôi, thứ tự ngày, tháng và năm xuất hiện tùy thuộc vào văn hóa hiện tại. Thats lý do tại sao bạn đã nhận thấy một sự khác biệt giữa đầu tiên và các phương pháp tiếp cận khác. Bạn có thể sử dụng một nền văn hóa spefic, f.e. bằng cách sử dụng quá tải DateTime.ToString. –

+0

Điểm duy nhất tôi muốn thực hiện với giải pháp này là những trở lại 2 định dạng khác nhau khi bạn có một chữ số ngày hoặc tháng, DateTime.Now.ToString ("dd/MM/yyyy") cung cấp cho bạn nói 01/01/2017 ở đâu như hai người kia sẽ cho bạn 1/1/2017. – StackoverflowLoser

4

Nó phải là MM trong nhiều tháng. Bạn đang yêu cầu vài phút.

DateTime.Now.ToString("dd/MM/yyyy"); 

Xem Custom Date and Time Format Strings trên MSDN để biết chi tiết.

+0

hi, tôi đang sử dụng mã ở trên một cách chính xác, khi được thực thi từ ngày tự động iis được phân tách bằng' - 'thay vì'/'. tôi đã tạo một bản ghi cho điều đó để kiểm tra đầu vào. bạn có thể giúp tôi giải quyết vấn đề này không, định dạng ngày tháng của máy iis là dd/MM/yyyy. – Vijayaraghavan

+0

i đặt giá trị cho hộp văn bản Textbox.Text = DateTime.Today.ToString ("dd/MM/yyyy"); nhưng nó nhận ra là: 30-08-2016 – Vijayaraghavan

+0

tôi đoán tôi đã tìm thấy giải pháp ở đây http://stackoverflow.com/questions/6343289/why-does-datetime-tostringdd-mm-yyyy-give-me-dd-mm- yyyy – Vijayaraghavan

9

sử dụng MM (tháng) thay vì mm (phút):

DateTime.Now.ToString("dd/MM/yyyy"); 

séc here cho các tùy chọn định dạng hơn.

+0

Điều đó có hiệu quả. Cảm ơn !! – pordi

2

Sử dụng MM trong nhiều tháng. mm chỉ mất vài phút.

DateTime.Now.ToString("dd/MM/yyyy"); 

Bạn có thể chạy mã này vào lúc bắt đầu một giờ như (00:00, 05.00, 18.00) và mm cho phút (00) để datetime của bạn.

Từ Custom Date and Time Format Strings

"mm" -> Giây phút, từ 00 đến 59.

"MM" -> Các tháng, kể từ ngày 01 qua 12.

Đây là DEMO. (Phần nào của tháng một phần của dòng đầu tiên phụ thuộc vào thời gian bạn chạy mã này ;))

0

Ngoài những câu trả lời khác đã nói, hãy lưu ý rằng ký tự '/' trong "dd/MM/yyyy" không phải là một ký tự chữ: nó đại diện cho dấu phân cách ngày của văn hóa người dùng hiện tại. Do đó, nếu văn hóa hiện tại sử dụng ngày yyyy-MM-dd, thì khi bạn gọi toString, nó sẽ cung cấp cho bạn một ngày như "31-12-2016" (sử dụng dấu gạch ngang thay vì dấu gạch chéo).Để buộc nó sử dụng dấu gạch chéo, bạn cần phải thoát khỏi ký tự đó:

DateTime.Now.ToString("dd/MM/yyyy")  --> "19-12-2016" for a Japanese user 
DateTime.Now.ToString("dd/MM/yyyy")  --> "19/12/2016" for a UK user 
DateTime.Now.ToString("dd\\/MM\\/yyyy") --> "19/12/2016" independent of region 
Các vấn đề liên quan