VB 获取当前日期而非系统日期

罗简单 2009-01-02 04:45:22
如题:获取系统日期很简单,即可使用Date函数,比如今天是2009-1-2,但是我把系统日期修改为了2009-1-3,那么使用Date获取的日期是2009-1-3而非正确的2009-1-2。请问在VB中怎么样达到这个目的?
Windows在安装的时候需要设置时间,这个时间就是当前的时间!怎么获取呢?
解决了马上给分!
...全文
3072 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
king06 2009-01-05
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 of123 的回复:]
引用 14 楼 luojiandan 的回复:
是北京时间!
因为是野外工作人员使用,没有网络,所以不能通过网络获取。

我的想法是在先设定好系统日期,并且把校正后的日期读入注册表,然后添加算法,根据注册表中的时间算出当前日期。这样,如果野外工作人员修改了系统日期也不影响注册表中的日期!


不管用什么方法,你所“记录”的时间是一个“死”时间。而系统时间是写入时钟芯片(模块)的,它会按照其内部时钟脉冲不断更新…
[/Quote]
这个思路不错,,,这个 关机时间 怎么获取?
wpy110521 2009-01-05
  • 打赏
  • 举报
回复
查找c盘下的某个文件夹下的所有文件的创建修改时间.最晚的那个就是当前时间.比如说
C:\WINDOWS\system32

你是不是要做安装包验证时间啊.
东方之珠 2009-01-05
  • 打赏
  • 举报
回复
up
of123 2009-01-05
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 luojiandan 的回复:]
是北京时间!
因为是野外工作人员使用,没有网络,所以不能通过网络获取。

我的想法是在先设定好系统日期,并且把校正后的日期读入注册表,然后添加算法,根据注册表中的时间算出当前日期。这样,如果野外工作人员修改了系统日期也不影响注册表中的日期!
[/Quote]

不管用什么方法,你所“记录”的时间是一个“死”时间。而系统时间是写入时钟芯片(模块)的,它会按照其内部时钟脉冲不断更新,即使关机。

如果你的机器一直开着,倒是可以根据开机时钟数和初始时钟记录计算当前时间(也只能计算 43 天)。问题是,关机之后你如何处理?

一个解决方法是:

1 关机时记录系统时钟并更新你所记录的时间。记录时间 = 原记录时间 + 开机时间。这个开机时间可以通过 GetTickCount API 获得,单位是 ms,精度为 10 ms。

2 开机时根据系统时钟算出关机时间长度。根据关机的时间长度更新你的“记录时间”。即,记录时间 = 原记录时间 + 关机时间。

这样,你就可以在开机时随时利用 GetTickCount 算出一个时间。 你要做的是写一个驻留内存软件,随系统启动,在启动后和关机时更新时间记录。写在哪里反倒不重要。
gitbyte 2009-01-05
  • 打赏
  • 举报
回复
直接禁止修改。修改了也没用。最有效了。
无·法 2009-01-05
  • 打赏
  • 举报
回复
Private Sub Form_Load()
MsgBox strGetDate
End Sub
Private Function strGetDate() As String
Dim XmlHttp As Object
Set XmlHttp = CreateObject("Microsoft.XMLHTTP")
XmlHttp.Open "Get", "http://www.symental.com/time/date.asp", False
XmlHttp.send
strGetDate = StrConv(XmlHttp.ResponseBody, vbUnicode)
Set XmlHttp = Nothing
End Function
神马都能聊 2009-01-05
  • 打赏
  • 举报
回复
关机时间获取在异常时会出现问题,或者服务/程序已经退出,不确定因素较多..虽然算是个解决方法,但是实际应用效果应该不会好.
Tiger_Zhao 2009-01-05
  • 打赏
  • 举报
回复
没有绝对完美的系统,严格的制度才是安全的保障。
制度高于技术。
罗简单 2009-01-04
  • 打赏
  • 举报
回复
这只是从技术手段上进行处理的,当然结合行政处理就不需要这么麻烦了,直接读取系统日期!
做的是一个工作日志,员工每天都要填写,如果这一天过了,就不能填写了,但是获取系统日期的话,员工可以改了系统日期后再登记当天的工作日志!
罗简单 2009-01-04
  • 打赏
  • 举报
回复
是北京时间!
因为是野外工作人员使用,没有网络,所以不能通过网络获取。

我的想法是在先设定好系统日期,并且把校正后的日期读入注册表,然后添加算法,根据注册表中的时间算出当前日期。这样,如果野外工作人员修改了系统日期也不影响注册表中的日期!
神马都能聊 2009-01-04
  • 打赏
  • 举报
回复
没有网络,又不取本地的系统时间...试问那能取哪里的呢
本地其它方式也不可行,不开机你就没法跟进每天的时间..
ewu2816 2009-01-04
  • 打赏
  • 举报
回复
只能通过网络对时。。。。。
Tiger_Zhao 2009-01-04
  • 打赏
  • 举报
回复
如果是北京时间,现在是 2009-01-04 11:06
如果是伦敦时间,现在是 2009-01-04 03:06
你说现在应该是什么时间?
脱离了环境是没有所谓正确的当前时间的,你只能认为系统时间就是正确的。
chenyubo1977 2009-01-04
  • 打赏
  • 举报
回复
单机版只能取到WINDOWS的系统时间
of123 2009-01-04
  • 打赏
  • 举报
回复

楼主,你的当前时间指的是什么,你设想它的信息来源是何处?

在 PC 机上,是依靠 BIOS 中的 CMOS 非易失性存储器和时钟芯片的配合来保持时钟的。也就是说,只有最后设置的时钟可以获取。

你说的安装 Windows 时的时钟是什么,如果那时就设置错呢?

任何信息的获取,要有来源。你所指的时钟来源究竟是什么?
Tiger_Zhao 2009-01-04
  • 打赏
  • 举报
回复
安全策略,“更改系统时间”这一项。
苍狼传说 2009-01-04
  • 打赏
  • 举报
回复
给你提供个思路,你安装程序的时候,将正确的时间记录下来(你所说的当前日期),将系统时间也记录下来,在运行时取当前系统时间,减去你安装时候的系统时间,再加上你安装时记录的正确时间,就可以得到一个比较正确也准确的时间。在程序关闭时或实时记录经过计算后的正确时间,同时也记录系统时间,以后程序运行时就可依照上述方法得到你想要的时间
tgstgstgs 2009-01-03
  • 打赏
  • 举报
回复
必须通过网络获取当前的时间
jsnjfzm 2009-01-03
  • 打赏
  • 举报
回复
帮顶
加载更多回复(6)

1,488

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧