我正在处理一个工作处理程序,它接受各种工作站的任务。这些任务有一系列参数,其中一些是日期,但是(不幸的是,我的控制之外)它们作为字符串传递。由于作业可能来自不同的工作站,因此用于将日期格式化为字符串的实际日期时间格式可能(当然也是实际的)不同。
Googling,我发现唯一的快速解决方案是偷偷地更改ShortDateFormat变量,然后将其恢复到其原始值。因为ShortDateFormat是一个全局变量,而且我正在一个线程环境中工作,唯一的方法是通过同步每个对它的访问,这是完全不可接受的(和可撤销的)。
我可以将SysUtils单元的库代码复制到我自己的方法中,并调整它们使用指定的格式而不是全局变量,但我只是想知道是否有更多的东西,我错过了。
亲爱的,并且提前感谢,
威廉
UPDATE
更简洁地说:
我需要像StrToDate(或StrToDateTime)这样的东西,增加的选项是指定它应该用来将字符串转换为TDateTime的确切格式。
解决方法
码:
文档:
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。