注册 登录
编程论坛 VFP论坛

一个实用的协调世界时的函数,非常实用

sam_jiang 发布于 前天 11:08, 370 次点击
如题。这个时间戳几乎是唯一的,也可以用于某些需要唯一性的场合。。。

根据6楼的简洁代码更改一下,谢谢@nbwww

程序代码:

* utctime.prg
* 参数lttime为日期时间型,默认为系统当前日期时间
* nunit为返回的时间单位,0为秒,1为毫秒。
* 该程序用于将本地时间转换为UTC时间戳,常用于网络编程。
* 支持秒级(nunit[color=#808080]=0)和毫秒级(nunit=1)两种输出格式。[/color]
* 默认返回秒级时间值
* 适合于东八区,北京时间

PARAMETERS lttime,nunit &&0,second;1,millisecond

DO CASE
    CASE PCOUNT()=0
        lttime=DATETIME()
        nunit=0
    CASE PCOUNT()=1
        nunit=0
    CASE PCOUNT()=2
        IF !INLIST(nunit,0,1)
            nunit=0
        ENDIF
   
    OTHERWISE
   
ENDCASE

LOCAL lnmillisecond

* 获取毫秒数,一个近似值,
lnmillisecond=SECONDS()
lnmillisecond=INT((lnmillisecond-INT(lnmillisecond))*1000)

*得到的结果可以作为唯一的整数使用。
IF nunit=1
    RETURN (lttime-DATETIME(1970,1,1,8,0,0))*1000+lnmillisecond
ELSE
    RETURN lttime-DATETIME(1970,1,1,8,0,0)
ENDIF


 



[此贴子已经被作者于2025-10-16 20:36编辑过]

7 回复
#2
csyx前天 11:41
考虑用 GetTimeZoneInformation api 获取时区偏差吧,这样就不用限制只适用于东八区了
#3
sam_jiang前天 12:30
回复 2楼 csyx
哈哈,DS也建议我加一个时区参数。

但我想,自己用用可以了,老外不会用我这个吧
#4
csyx前天 13:08
如果只自己用自然没问题,但你发出来就是要给别人用的,不光是老外的事,很多外贸公司,他们的电脑即安装的是中文版,也会存在将时区设置成其他国家的
#5
schtg前天 14:52
#6
nbwww前天 19:15
到底在说什么?没看懂
?datetime()-datetime(1970,1,1,8,0,0)    不是这意思吗?
#7
sam_jiang前天 19:32
回复 6楼 nbwww
可以说是也可以说不是,哈哈,你这整的,没朋友的
#8
nbwww前天 19:52
回复 7楼 sam_jiang
1