2010-07-06 91 views
1

我正在尋找一個庫或片段來將日期/時間格式字符串從Delphi轉換爲.Net。這是德爾福版本2007.德爾福到.Net格式字符串轉換

例如,德爾福2007年指定「m」爲月,而.Net使用「M」。但是,在Delphi中,如果「m」跟在「h」之後,那麼它表示一個微小的值。

有沒有可用的,還是我必須推出自己的?

+0

到底在說什麼?在內存中還是在文件中?什麼字符串編碼? Delphi的哪個版本?(幾年前,他們對字符串格式處理做了一些很大的改動。) – 2010-07-06 13:42:50

+0

我加了一些說明 - 謝謝梅森。 – Armbrat 2010-07-06 13:47:05

+0

啊哈!你在談論*格式字符串*。我以爲你在談論*字符串格式*。 :P – 2010-07-06 15:02:30

回答

3

ShineOn具有的功能要做到這一點:

ConvertDelphiDateTimeFormat(const aFormat: DelphiString): DelphiString; 

它還具有逆:

ConvertClrDateTimeFormat(const aFormat: DelphiString): DelphiString; 

它在 「Date Functions (SysUtils).pas」 文件中找到。

的代碼確實表明它不是100%

轉換日期格式:

這是接近的,但也有一些情況下映射必須是近似的。

對於Delphi的格式,這意味着

  • 上午/下午映射到AMPM(即,必須使用 系統設定)
  • A/P是基於目前的設置,而不是硬編碼爲 'A'或「p」
  • 在AM/PM超過情況下並不能夠控制或者A/p串
  • 如何代表時代沒有選擇,他們都映射到GG
  • 針對z不支持 - 它映射到小數小數點後3位(zzz)

對於CLR格式,這意味着

  • 單位數年的支持,它們映射到2位年。
  • 當沒有am/pm符號時,不支持12小時制,使用24小時制。
  • 分數秒內沒有支持,它們映射到毫秒(ZZZ)
  • 時區不支持抵消
+0

它似乎沒有處理好以下幾個: 德爾福= YYYYMMDD HH:MM,淨= YYYYMMDD HH:MM 我相信它應該是: 德爾福= YYYYMMDD HH:MM,淨= YYYYMMDD HH:MM 請注意不正確處理分鐘字段。 – Armbrat 2010-07-06 16:54:13

+0

由於您擁有代碼,因此可能需要修復該特定問題並將補丁提交回該項目。 – 2010-07-06 17:19:12