Delphi 到 .Net 格式字符串转换

发布于 2024-09-08 12:05:14 字数 176 浏览 3 评论 0原文

我正在寻找一个库或代码片段来将日期/时间格式字符串从 Delphi 转换为 .Net。这是针对 Delphi 2007 版本的。

例如,Delphi 2007 将“m”指定为月份,而 .Net 使用“M”。然而,在Delphi中,如果“m”跟在“h”后面,则它代表分钟值。

有可用的吗,还是我必须自己动手?

I am looking for a library or snippet to convert Date/Time format strings from Delphi to .Net. This is for Delphi version 2007.

For example, Delphi 2007 specifies "m" as month, whereas .Net uses "M". However, in Delphi, if the "m" follows an "h", then it represents a minute value.

Are any available, or do I have to roll my own?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

Bonjour°[大白 2024-09-15 12:05:14

ShineOn 有一个函数可以做到这一点:

ConvertDelphiDateTimeFormat(const aFormat: DelphiString): DelphiString;

它也有相反的功能:

ConvertClrDateTimeFormat(const aFormat: DelphiString): DelphiString;

它可以在“日期函数 (SysUtils).pas”文件。

不是 100%

该代码确实表明日期格式之间

转换:这很接近,但在某些情况下映射必须是近似的。

对于 Delphi 格式,这意味着

  • am/pm 映射到 ampm(即必须使用
    系统设置)
  • a/p 基于当前设置,未硬编码为“a”或“p”
  • 无法控制 am/pm 或 a/p 字符串中的大小写
  • 没有如何表示时代的选项,它们都映射到 gg
  • 否支持 z —— 它映射到小数点后 3 位的秒小数 (zzz)

对于 CLR 格式,这意味着

  • 不支持单位数年份,它们映射到 2 位数年份。
  • 当没有 am/pm 符号时,不支持 12 小时制,使用 24 小时制。
  • 不支持小数秒,它们映射到毫秒 (zzz)
  • 不支持时区偏移

ShineOn has a function to do just that:

ConvertDelphiDateTimeFormat(const aFormat: DelphiString): DelphiString;

It also has the inverse:

ConvertClrDateTimeFormat(const aFormat: DelphiString): DelphiString;

It's found in the "Date Functions (SysUtils).pas" file.

The code does indicate it's not 100%

Conversions between date formats:

This is close, but there are some cases where the mapping must be approximate.

For Delphi formats, this means

  • am/pm maps to ampm (that is, must use
    system setting)
  • a/p is based on current settings, not hardcoded to 'a' or 'p'
  • no control over case in the am/pm or a/p strings
  • no options for how to represent era, they all map to gg
  • no support for z -- it maps to fractional seconds with 3 decimals (zzz)

For CLR formats, this means

  • no support for single-digit years, they map to 2 digit years.
  • no support for 12-hour clock when there is no am/pm symbol, 24-hour is used.
  • no support for fractional seconds, they map to milliseconds (zzz)
  • no support for time zone offsets
却一份温柔 2024-09-15 12:05:14

你必须自己动手。

使用以下链接进行映射:

  1. .NET 自定义日期和时间格式字符串
  2. .NET 标准日期时间格式字符串
  3. Delphi SysUtils.FormatDateTime 说明符

--jeroen

You have to roll your own.

Use these links to make the mapping:

  1. .NET Custom Date and Time Format String
  2. .NET Standard DateTime Format Strings
  3. Delphi SysUtils.FormatDateTime specifiers

--jeroen

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文