Delphi 有关日期时间的函数,以及StrToDateTime函数在不同系统出现错误的解决方案

Delphi提供了很多关于时间和日期的函数,非常方便。

引用

但是有时候一个疏忽导致你不知道错在哪里。

类似Java的Date().getTime()函数,它返回1970年1月1日8点(UTC+8)到当前时间之间的毫秒数。

在Delphi中用MinutesBetween函数就可以得到2个时间相差的毫秒数了。

首先必须将1970年1月1日8点转换为TDateTime类型,我就是在程序中这样写了一句

这句代码没有任何问题吧?你会发现在Windows7上出现错误,提示时间无效,但是这个时间确实没有错误,到底怎么回事?

其实大家看看Windows7的区域和语言设置便知道,看到日期了吗,是用"/"将年月日连接起来的,而在Xp系统是用"-"连接的。

这样就好解决这个错误了,直接把日期中的"-"改成"/",但这不是最好的办法,极不可取,程序员必须找到通用的办法,不管你系统格式设置的什么,都不影响我们的程序。

于是我找到了EncodeDateTime函数,直接用它转换成TDateTime类型

EncodeDateTime函数的参数是:EncodeDateTime(年, 月, 日, 时, 分, 秒, 毫秒)

如果程序非得用StrToDateTime函数,那只能自己处理字符串再用EncodeDateTime转换为TDateTime类型,目前我还没有找到更好的办法。

我的建议就是在保存时间的时候不要加连接符号,用FormatDateTime函数格式化日期和时间,请看下面。

 

它返回的日期还是用"-"连接的,这与系统设置有关,所以我们最好不用连接符,直接

这样读取就有固定的格式了,也好处理,就说这么多,发现错误再来补充。

 

时间差的函数是*Between这样的形式,比如

YearsBetween

MonthsBetween

WeeksBetween

DaysBetween

HoursBetween

SecondsBetween

MinutesBetween

 

DateUtils中还有很多时间日期函数,大家自己看看。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Delphi是一种基于Object Pascal语言的集成开发环境(IDE),用于开发Windows平台的应用程序。在Delphi中,内部函数是指由Delphi提供的一些内置函数,用于执行常见的操作或提供特定功能。以下是一些常用的Delphi内部函数的介绍: 1. Length:用于获取字符串或数组的长度。例如,Length('Hello')将返回5,Length([1, 2, 3])将返回3。 2. Copy:用于复制字符串或数组的一部分。它接受三个参数:源字符串或数组、起始位置和复制长度。例如,Copy('Hello', 2, 3)将返回'ell'。 3. Pos:用于查找子字符串在字符串中的位置。它接受两个参数:子字符串和目标字符串。例如,Pos('lo', 'Hello')将返回4。 4. IntToStr和StrToInt:IntToStr用于将整数转换为字符串,而StrToInt用于将字符串转换为整数。 5. Format:用于格式化字符串。它接受一个格式字符串和一系列参数,并返回一个格式化后的字符串。例如,Format('Hello, %s!', ['John'])将返回'Hello, John!'。 6. DateTimeToStr和StrToDateTimeDateTimeToStr用于将日期时间值转换为字符串,而StrToDateTime用于将字符串转换为日期时间值。 7. Random和RandomRange:Random用于生成一个0到MaxInt之间的随机整数,而RandomRange用于生成一个指定范围内的随机整数。 8. ShowMessage:用于显示一个消息框,其中包含指定的文本。例如,ShowMessage('Hello, World!')将显示一个包含'Hello, World!'文本的消息框。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值