Làm cách nào để đặt định dạng đối tượng DateTime?
Bạn không thể. Giá trị DateTime
không có định dạng, bất kỳ giá trị nào lớn hơn int
hoặc double
đều có giá trị. Khi bạn muốn chuyển đổi chúng thành/từ chuỗi, là nơi bạn chỉ định bất kỳ thông tin định dạng nào.
Thay vào đó, bạn nên sử dụng SQL được tham số hóa và tránh chuyển đổi giá trị DateTime
trở lại thành chuỗi ở địa điểm đầu tiên. Đây là một thực hành chung tốt nhất - không bao gồm các giá trị trong chuỗi SQL của bạn; SQL tham số có nhiều lợi ích:
- Nó tránh SQL injection attacks
- Nó tránh được các vấn đề chuyển đổi như thế này một
- Nó giữ mã của bạn (SQL) tách rời khỏi dữ liệu của bạn (giá trị tham số)
tôi sẽ cũng đề xuất rằng thay vì sử dụng Convert.ToDateTime
, bạn chỉ định định dạng mong đợi của mình khi phân tích cú pháp. Ví dụ:
timeStamp = DateTime.ParseExact(y.InnerText,
"dd/MM/yyyy HH:mm:ss",
CultureInfo.InvariantCulture);
Về cơ bản, hai quy tắc tôi cố gắng áp dụng là:
- Tránh thực hiện bất kỳ chuyển đổi mà bạn không phải. Nếu bạn đảm bảo rằng mọi hệ thống đều sử dụng đúng loại dữ liệu càng nhiều càng tốt, bạn thường không cần thực hiện bất kỳ chuyển đổi nào.
- Nơi bạn do cần chuyển đổi thành/từ biểu diễn chuỗi, rất rõ ràng về đại diện bạn muốn tiêu thụ/sản xuất. Đối với các giá trị máy có thể đọc được, thường nên sử dụng văn bản bất biến và có thể là định dạng ngày/giờ tùy chỉnh. Đối với các giá trị có thể đọc được của con người, thường nên sử dụng văn hóa của người dùng và định dạng ngày/giờ chuẩn.
Nguồn
2013-03-14 11:09:24
datatype của cột cơ sở dữ liệu của bạn là gì, nếu nó là 'DateTime' sau đó tôi đoán bạn đang sử dụng dây nối để tạo truy vấn của bạn. Sử dụng các truy vấn được tham số – Habib
'DateTime' là bất khả tri về định dạng, chỉ khi bạn chuyển đổi thành chuỗi, nó sẽ được bản địa hóa. – Lloyd
Nếu tham số 'field/field' của cơ sở dữ liệu là' datetime type' bạn sẽ ổn. Nó không phải là một ý tưởng tốt để vượt qua ngày như một chuỗi. Về cơ bản Ngày không có định dạng. – Kaf