加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 基于任意格式将字符串转换为TDateTime

发布时间:2020-12-15 10:13:54 所属栏目:大数据 来源:网络整理
导读:在Delphi 5中有没有办法将字符串转换为TDateTime,您可以在其中指定要使用的实际格式? 我正在处理一个工作处理程序,它接受各种工作站的任务。这些任务有一系列参数,其中一些是日期,但是(不幸的是,我的控制之外)它们作为字符串传递。由于作业可能来自不
在Delphi 5中有没有办法将字符串转换为TDateTime,您可以在其中指定要使用的实际格式?

我正在处理一个工作处理程序,它接受各种工作站的任务。这些任务有一系列参数,其中一些是日期,但是(不幸的是,我的控制之外)它们作为字符串传递。由于作业可能来自不同的工作站,因此用于将日期格式化为字符串的实际日期时间格式可能(当然也是实际的)不同。

Googling,我发现唯一的快速解决方案是偷偷地更改ShortDateFormat变量,然后将其恢复到其原始值。因为ShortDateFormat是一个全局变量,而且我正在一个线程环境中工作,唯一的方法是通过同步每个对它的访问,这是完全不可接受的(和可撤销的)。

我可以将SysUtils单元的库代码复制到我自己的方法中,并调整它们使用指定的格式而不是全局变量,但我只是想知道是否有更多的东西,我错过了。

亲爱的,并且提前感谢,

威廉

UPDATE

更简洁地说:

我需要像StrToDate(或StrToDateTime)这样的东西,增加的选项是指定它应该用来将字符串转换为TDateTime的确切格式。

解决方法

我为FreePascal的dateutils单元创建了这样的例程,如果需要移植,它应该很容易地移植。

码:

http://svn.freepascal.org/cgi-bin/viewvc.cgi/trunk/packages/rtl-objpas/src/inc/dateutil.inc?revision=30628&view=co

(代码是文件末尾的最后一个(巨大的)过程)

文档:

http://www.freepascal.org/docs-html/rtl/dateutils/scandatetime.html

请注意,它不是formatdatetime的完整的反向,它有一些扩展:

> FormatDateTime的倒数不是100%的倒数,只是因为可以把例如时间令牌在格式字符串中两次,而scandatetime不知道选择哪个时间。
>像hn这样的字符串不能安全地反转。例如。 1:2(1分钟后2分钟)提供12,被解析为12:00,然后
错过了“n”部分的字符。

>尾随字符被忽略。
>不支持东亚格式化字符,因为它们只是窗口。
>没有MBCS支持。

>扩展

#9吃空白
>在空格结尾的模式是可选的。
>?匹配任何字符。
>引用上面的chars来真正匹配char。

(我相信这些意见稍微过时了,这个意义上,一些亚洲的支持后来被添加了,但我不确定)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读