Làm cách nào để chuyển đổi DateTime thành / từ định dạng chuỗi cụ thể (cả hai cách, ví dụ Định dạng đã cho là yyyyMMdd bù)?


132

Tôi gặp sự cố khi chuyển đổi một datetime có định dạng chuỗi nhưng tôi không thể chuyển đổi nó bằng "yyyyMMdd"định dạng.

Mã của tôi là:

string tpoc = refSubClaim.BenefitsFolder.BenefitFolderIdNumber.ToString();
string[] tpocinfo = Regex.Split(tpoc,";");

for (int i = 0; i < tpocinfo.Length; i++)
{
    switch (i)
    {
        case 0:
        {
            string[] tpoc2 = Regex.Split(tpocinfo[0], ",");
            claimantAuxillaryRecord.TPOCDate2 = tpoc2[0].ToString();
            claimantAuxillaryRecord.TPOCAmount2 = Convert.ToDecimal(tpoc2[1]);
            claimantAuxillaryRecord.FundingDelayedBeyondTPOCStartDate2 = tpoc2[2].ToString();
        }
        break;

Định dạng nào là chuỗi datetime ngay bây giờ?
Falle1234

11
Và sự liên quan của đoạn mã của bạn với câu hỏi là gì?
Darin Dimitrov

2
Tôi có một chút không rõ ràng; bạn đang làm việc với một chuỗi đại diện của một ngày, hoặc một đối tượng DateTime? Giả sử đó là một đối tượng DateTime bạn chỉ có thể gọi obj.ToString("yyyyMMdd");
Nathan Taylor

Trên thực tế TPOCDate2 đã là một biến và tôi chỉ muốn chuyển đổi các elemnts trong tpoc2 [0] thành định dạng yyyyMMdd. Hy vọng điều này trả lời câu hỏi của bạn
Ashutosh

Bạn đang bị mắc kẹt ở đâu đó?
Dariusz Woźniak

Câu trả lời:


224

nếu bạn có một ngày trong một chuỗi với định dạng "ddMMyyyy" và muốn chuyển đổi nó thành "yyyyMMdd", bạn có thể làm như thế này:

DateTime dt = DateTime.ParseExact(dateString, "ddMMyyyy", 
                                  CultureInfo.InvariantCulture);
dt.ToString("yyyyMMdd");

4
Bị mắc kẹt với mã của bạn, mã này hoạt động tốt DateTime.TryPude (stringValue, out outputInDateTime);
DJ '

64

Phân tích ngày tháng:

Để phân tích một DateTime, sử dụng một trong các phương pháp sau:

Ngoài ra, bạn có thể sử dụng mẫu phân tích thử :

Đọc thêm về Chuỗi định dạng ngày và giờ tùy chỉnh .

Chuyển đổi DateTime thành một chuỗi:

Để trả về DateTime dưới dạng chuỗi ở định dạng "yyyyMMdd", bạn có thể sử dụng ToStringphương thức.

  • Ví dụ đoạn mã: string date = DateTime.ToString("yyyyMMdd");
  • Lưu ý trên bên cased M 's tham khảo tháng và thấp-cased m là đến vài phút.

Trường hợp của bạn:

Trong trường hợp của bạn, giả sử bạn không muốn xử lý tình huống khi ngày có định dạng khác hoặc bỏ lỡ, sẽ thuận tiện nhất khi sử dụng ParseExact:

string dateToParse = "20170506";
DateTime parsedDate = DateTime.ParseExact(dateToParse, 
                                          "yyyyMMdd",
                                          CultureInfo.InvariantCulture);

7
Đây là một chủ đề cũ, nhưng đối với những người tìm kiếm, liên kết ở trên, "định dạng văn hóa cụ thể" hiện là một liên kết chết. Đây là một chuỗi định dạng ngày và thời gian tùy chỉnh

40

Bạn có thể chuyển đổi chuỗi của mình thành một DateTimegiá trị như thế này:

DateTime date = DateTime.Parse(something);

Bạn có thể chuyển đổi một DateTimegiá trị thành một chuỗi được định dạng như thế này:

date.ToString("yyyyMMdd");

11

Định dạng ngày chuỗi yyyy-MM-dd: Ví dụ:

TxtCalStDate.Text = Convert.ToDateTime(objItem["StartDate"]).ToString("yyyy/MM/dd");   

10

Nếu bạn muốn có DATE là chuỗi với TIME . Chúng ta có thể làm như thế này:

    //Date and Time is taking as current system Date-Time    
    DateTime.Now.ToString("yyyyMMdd-HHmmss");

7
phút nên nhỏ "m"!? "yyyyMMdd-HHmmss"
CeOnSql

6

Sử dụng DateTime.TryParseExact()nếu bạn muốn khớp với định dạng ngày cụ thể

   string format = "yyyyMMdd"; 
    DateTime dateTime;
    DateTime.TryParseExact(dateString, format, CultureInfo.InvariantCulture,
                                             DateTimeStyles.None, out dateTime);

5

Bạn có thể sử dụng DateTime.TryParse()thay vì DateTime.Parse().
Với TryParse()bạn có một giá trị trả về nếu nó thành công và với Parse()bạn phải xử lý một ngoại lệ


5

Đơn giản chỉ cần làm theo cách này.

string yourFormat = DateTime.Now.ToString("yyyyMMdd");

Chúc mừng mã hóa :)


3

không có chuỗi nào với yyyy / mm / dd và tôi cần nó ở định dạng yyyyMMdd

Nếu bạn chỉ cần xóa dấu gạch chéo khỏi chuỗi, bạn không cần thay thế chúng?

Thí dụ:

myDateString = "2013/03/28";
myDateString = myDateString.Replace("/", "");

myDateString bây giờ sẽ là "20130328".

Ít quá mức cần thiết :)


3

Đó là cách đơn giản để chuyển đổi sang định dạng

 DateTime.Now.ToString("yyyyMMdd");

2

Dựa trên tên thuộc tính, có vẻ như bạn đang cố gắng chuyển đổi một chuỗi thành một ngày bằng cách gán:

claimantAuxillaryRecord.TPOCDate2 = tpoc2[0].ToString();

Có lẽ là do văn hóa UI hiện tại và do đó nó không thể diễn giải chính xác chuỗi ngày khi được gán.


không có chuỗi nào với yyyy / mm / dd và tôi cần nó ở định dạng yyyyMMdd
Ashutosh

và trong khi thực hiện yêu cầuAuxillaryRecord.TPOCDate2 = tpoc2 [0] .ToString ("yyyyMMdd"); nó đưa ra một số lỗi xây dựng. Phương thức quá tải tốt nhất phù hợp với 'string.ToString (System.IFormatProvider)' có một số tranh luận không hợp lệ
Ashutosh

@Matt - thật sao? Bạn đã chỉnh sửa phản hồi hơn 4 năm thậm chí không được đánh dấu là câu trả lời để thêm tab? Đó là một trường hợp xấu nghiêm trọng của OCD bạn đã có ở đó.
Peter

1

Từ C # 6:

var dateTimeUtcAsString = $"{DateTime.UtcNow:o}";

Kết quả sẽ là: "2019-01-15T11: 46: 33.2752667Z"


0

Một cách đơn giản hơn tôi đã đi qua trong khi tìm kiếm câu trả lời này là tốt;

string date = DateTime.Now.ToString("yyyyMMdd", System.Globalization.CultureInfo.GetCultureInfo("en-US"));

Làm thế nào về tôi có một giá trị cho DateTime? Giống như DateTime newDate = DateTime.Parse(Session["date"].ToString());?
WTFZane

0

Bạn có thể thử các mã này

claimantAuxillaryRecord.TPOCDate2  = Convert.ToDateTime(tpoc2[0]).ToString("yyyyMMdd"); 

Hoặc là

claimantAuxillaryRecord.TPOCDate2 = Convert.ToDateTime(tpoc2[0]).ToString("yyyyMMdd hh:mm:ss"); 

1
Vì tình yêu của chúa (vị cứu tinh của chúa tể Harambe), đừng bao giờ sử dụng Convert.ToDateTime ... Điều này quá chậm (~ 100ms)! Chỉ cần sử dụng ParseExact hoặc TryPude - waaaaay nhanh hơn !!!
Koshera
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.