Một trích dẫn trong định dạng thời gian ngày C # có nghĩa là gì?


55

Chúng tôi có ví dụ: hằng số này trong C #:

System.Globalization.DateTimeFormatInfo.InvariantInfo.SortableDateTimePattern

Nó có giá trị này:

"yyyy'-'MM'-'dd'T'HH':'mm':'ss"

Tôi sử dụng nó trong ParseExactchức năng và sau đó yyyy-MM-ddTHH:mm:sslàm việc như là tốt.

Tôi không thể tìm ra những trích dẫn duy nhất là gì.

Câu trả lời:


76

Đó là một dấu phân cách chuỗi theo nghĩa đen .

Bất cứ điều gì giữa các dấu ngoặc đơn được hiểu là một ký tự bằng chữ và sẽ không được hiểu là một chuỗi định dạng tùy chỉnh.

Chúng tương đương với thoát bằng cách sử dụng dấu gạch chéo ngược: dd'T'HHgiống như dd\THH.

Trong chuỗi của bạn yyyy'-'MM'-'dd'T'HH':'mm':'ss, các trích dẫn là không cần thiết xung quanh -T, vì đó không phải là các chuỗi định dạng tùy chỉnh, và do đó sẽ luôn được hiểu là chuỗi ký tự. Tuy nhiên, : một công cụ xác định định dạng , đánh giá một dấu tách thời gian phù hợp với văn hóa hiện tại. Trích dẫn nó ':'có nghĩa là nhân vật theo nghĩa đen :sẽ luôn được sử dụng, bất kể văn hóa hiện tại.


2

Thật hữu ích khi biết rằng đây là định dạng tương tự được sử dụng bởi chức năng GetDateFormat của Windows . Bạn sử dụng dấu nháy đơn để chỉ một số nghĩa đen mà bạn muốn chèn vào chuỗi kết quả.

Có thể tìm thêm tài liệu về mã định dạng chuỗi trên:

Trong chuỗi của bạn, có nghĩa là nó muốn thêm dấu gạch ngang, dấu hai chấm và ký tự T :

yyyy '-'MM '-'dd 'T'HH ':'mm ':'ss

Nói chung, bạn không muốn xây dựng ngày / lần với nghĩa đen là dấu gạch ngang ( -) hoặc dấu hai chấm ( :) hoặc thậm chí là dấu gạch chéo ( /). Bởi vì những điều đó là sai đối với các nền văn hóa không sử dụng dấu gạch chéo và dấu hai chấm để tạo ngày / lần:

  • 22/10/2019 10∶19∶54
        1. 10:19:54
  • 2019.10,22 10:19:54
  • 2019-10-22 10.19.54
  • 2019-10-22 10:19:54
  • 2019-10-22 10:19:54 SA
  • 2019-10-22 ཆུ་ཚོད་ 10:19:54
  • 2019-10-22 10:19:54
      1. 2019 10:19:54
        1. 10:19:54
  • 22.10.19 10:19:54
  • 22.10.19 ý. 10:19:54
  • 22.10.2019 10.19.54
  • 22.10.2019 10:19:54
  • 22.10.2019 10:19:54 pd
  • 22.10.2019 10:19:54
  • 22.10.2019. 10:19:54
  • 22-10-19 10.19.54
  • 22-10-19 10.19.54 SA
  • 22-10-19 10:19:54
  • 22-10-19 10:19:54
  • 22-10-2019 10:19:54
  • 22-10-2019 10:19:54
  • 22-ккт. 19 10:19:54
  • 23/02/41 10:19:54
  • 30/07/1398 10:19:54 ق.

Những gì bạn muốn làm, nếu bạn muốn chỉ ra:

  • "đây là nơi bạn nên đặt dấu phân cách ngày"
  • "đây là nơi bạn nên đặt dấu phân cách thời gian"

Được sử dụng đặc biệt:

  • ký tự thay thế dấu phân cách ngày (/)
  • ký tự thay thế dấu tách thời gian (:)

Và xây dựng một định dạng như:

dd / yyyy / MM ss: HH: mm

Tôi không biết những gì doanh nghiệp cần một người có thể phải hiển thị một ngày như:

  • 22/2019/10 37:10:24
  • 22-2019-10 37∶10∶24
  • 22 // 2019 // 10 37 :: 10 :: 24
      1. 10 37∶10∶24

Nhưng theo cách này, trình bản địa hóa sẽ chèn dấu phân cách ngày và giờ chính xác của văn hóa.

Trong khi đó, nếu bạn theo nghĩa đen yêu cầu /, -hoặc ::

  • dd '/'yyyy '/'MM ss ':'HH ':'mm

Bạn thực sự sẽ nhận được:

  • 22/2019/10 37:10:24

thay vì:

  • 22-2019-10 37∶10∶24

Tôi không nghĩ các chuỗi định dạng ngày và giờ của .NET giống hệt nhau GetDateFormat. Có lẽ tương tự, nhưng ví dụ ý nghĩa của yyyyylà khác nhau. Cho rằng câu hỏi này đang nhận được sự chú ý đáng kể và đó là về C # /, tôi khuyên bạn nên sửa câu lệnh này và liên kết với các tài liệu .NET thay thế.
cant7
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.