导读:这又是师傅给我指出的一个问题,说实话,其实开始根本没有当回事,觉得麻烦,可是,等我完成了获取标准北京时间后,我发现,这一步,是必须的。谢谢师傅对我的严格要求,让我一步一步的成长起来!

一、事件缘由

去验收机房的时候,当看着查询结果时,我是又傻了一回眼,我在501做的是24小时制,那边511是12小时制,出的日期和时间完全对不上号。我刚开始觉得没什么,因为我知道只是时间的格式不同而已,但是师傅说,你可以把它改为标准时间,你这时间错乱的,让别人怎么看?当时,就跟师傅说,是不是像手机一样,获取全球卫星定位的那个日期时间,不管我怎么折腾,那都是标准时间。

现在,想想也真是,要是账单查询,可就糟了,这日期和时间全对不上号,该是多么悲剧的一件事。

最先,我系统里的全部时间日期,都是这样写的:

txtOffDate.Text = Date

txtOffTime.Text = Time

其实,只要是计算机设定的时间没有误差,那这样写也就没有错,可是,有时候,就会出现时间格式不统一,可能还有日期不对的情况,这样,我获取的这个日期和时间就是错误的,我写进数据库的所有数据都存在着误差,要真是做财务的,相差一天,或者一个小时的账单不统一,我感觉就会出大问题。经过努力查询(问度娘的,作者不知道是谁,所以没法标注,目前,我写不出这样的,只能勉强理解),终于解决了。

二、解决办法

1,VB获取卫星定位时间,还真让我给弄出了一个,那定位课详细了,什么经度纬度都能给获取到,别说什么日期时间了。但这个真的太高大上了,看了半天都理解不了。所以,给放弃了!

2,通过使用Winsock控件,这个也可以实现,但真的代码一大堆,也有一些理解不了。所以,给放弃了。

3,通过Internet获取网络标准时间,这个也有不同的方法,我现在觉得相对简单的有两种,第一种我不知道怎么把日期和时间分开,所以给弃了。

一、Private Function GetHtml(Url As String)

    

    Dim xmlHttp As Object

    

    Set xmlHttp = CreateObject("Microsoft.XMLHTTP")

    

    xmlHttp.open "GET", Url, True

    xmlHttp.send (Null)

    

    While xmlHttp.ReadyState <> 4

        

        DoEvents

    

    Wend

    

    GetHtml = xmlHttp.responseText



End Function



Private Function getTime() As Date

    

    Dim Regex As Object, ms As Object, m As Object

    Dim HTML As String

    Dim t As String

    

    HTML = GetHtml("http://www.time.ac.cn/timeflash.asp?user=flash")

    

    Set Regex = CreateObject("VBSCRIPT.REGEXP")

    

    Regex.IgnoreCase = True

    Regex.Pattern = "<year>(\d+)</year><month>(\d+)</month><day>(\d+)</day>.+?<hour>(\d+)</hour><minite>(\d+)</minite><second>(\d+)</second>"

    

    Set ms = Regex.Execute(HTML)

    

    If ms.Count = 0 Then

        

        getTime = Now()

    

    Else

       

        t = ms.Item(0).SubMatches(0) _

        & "-" & ms.Item(0).SubMatches(1) _

        & "-" & ms.Item(0).SubMatches(2) _

        & " " & ms.Item(0).SubMatches(3) _

        & ":" & ms.Item(0).SubMatches(4) _

        & ":" & ms.Item(0).SubMatches(5)

        

        If IsDate(t) Then getTime = CDate(t) Else getTime = Now()

    

    End If



End Function



Private Sub Command1_Click()



    Call getTime

    Text1.Text = getTime

    

End Sub

然后第二种,就相对而言,好理解多了,活不多说,一个单词一个单词去查吧,拼起来,也就是那个意思了。它的日期和时间,是分开的,也就是想用哪个都可以。推荐感兴趣的人了解了解XmlHttp,还有Set XmlHttp = CreateObject中用的create和我们平时用的new的区别,以及里面的StrConv函数。

二、Private Sub Command1_Click()



    Call theTime

    Text1.Text = theTime

    

End Sub

Public Function theTime(Optional getDate As Boolean = True, Optional getTime As Boolean = True) As String



    Dim XmlHttp As Object

    

    Set XmlHttp = CreateObject("Microsoft.XMLHTTP")

    

    If getDate = True Then

        

        XmlHttp.Open "Get", "http://www.symental.com/time/date.asp", False

        XmlHttp.send

        theTime = StrConv(XmlHttp.ResponseBody, vbUnicode)



    End If



    If getTime = True Then

   

        XmlHttp.Open "Get", "http://www.symental.com/time/time.asp", False

        XmlHttp.send

        theTime = IIf(theTime <> "", theTime & " " & StrConv(XmlHttp.ResponseBody, vbUnicode), StrConv(XmlHttp.ResponseBody, vbUnicode))



    End If



    Set XmlHttp = Nothing



End Function

三、感受

现在的我,还很弱小,我自己写不出这样的函数,我只能踩着别人的肩膀上,我期望有一天,我的肩膀,也可以让别人踩。我现在还不能完全理解这些代码,但我相信,总有一天,我会的。

我太容易将就,从学生到机房,都是如此,真的很庆幸,我有那么严格要求的师傅。师傅总是很仔细,从用户的使用习惯,用户的实际需求,跟我讲部署,对我的系统进行页面排版上的指导,也能发现我系统中不合理的地方,真的很好,谢谢师傅们的指导。

其实,师傅真的挺关爱我的。那天我说我想当黑客,师傅就跟我说了一个名词:SQL注入,后来,我真的了解了很多,很感兴趣,自己也弄了一个表简单的试了一下,忒恐怖了!也学到了一点点防止SQL注入的方法。谢谢师傅!

2014.8.18修改

对于上述所说的解决方案,我感到深深的惭愧。当时太过兴奋,就往上贴了。其实,这些办法是存在问题的:比如说没有网怎么办?

后来,经过师傅的指导,终于知道,根本不用这么复杂,可以在VB中通过SQL语句获取数据库里的时间,这样也能保证时间统一。这个有专门的函数,获取时间日期,每个也就是一行代码的事儿,函数一搜一大把。比如日期:getdate,时间:convert。

请大家多多指教,谢谢!

【机房收费系统 4】:VB获取标准北京时间,免除时间误差的更多相关文章

  1. 机房收费系统(VB.NET)——超具体的报表制作过程

    之前做机房收费系统用的报表是Grid++Report,这次VB.NET重构中用到了VisualStudio自带的报表控件. 刚開始当然对这块功能非常不熟悉,只是探究了一段时间后还是把它做出来了. 以下 ...

  2. 机房收费系统(VB.NET)——存储过程实战

    最初接触存储过程是在耿建玲老师的视频里,当初仅仅是草草过了一遍.仅仅是有了个印象.知道了这个名词:大二时也有SqlServer数据库这门课,只是老师没讲,自己也没看:真正对存储过程的了解来自于自学考试 ...

  3. 机房收费系统——在VB中将MSHFlexGrid控件中的数据导出到Excel

    机房收费系统中,好多查询的窗体都包含同一个功能:将数据库中查询到的数据显示在MSHFlexGrid控件中,然后再把MSHFlexGrid控件中的数据导出到Excel表格中. 虽然之前做过学生信息管理系 ...

  4. 机房收费系统之vb报表的模板的制作(一)

           机房收费系统有报表的功能,报表对于我们来说有点陌生.这不是会计的事吗?怎么机房收费系统也參合进来了,事实上我们学会了报表的步骤.理解了代码后.报表变得不是非常难,世上无难事,仅仅怕肯登攀 ...

  5. 机房收费系统(VB.NET)个人版总结

    重构版个人机房收费系统大概从暑假开学開始进行.花了不到一个半月的时间才完毕.以下对我在重构过程中的一写理解. 1.系统设计一个非常重要的目的就是重用.而要做到重用,低耦合是最有效的手段回想一下我们C/ ...

  6. VB.NET版机房收费系统---异常处理

    异常处理,英文名为Exceptional Handling, 那时年少,还记得那年一起学习过的VB6.0的时候,常常使用ONError的错误语句.与传统VB6.0中的OnError语句相比.NET平台 ...

  7. VB.NET版机房收费系统---七仙女之系统登录

    VB.NET第一版机房收费系统,告一段落,验收的时候.问题也是大大的存在,没实用上设计模式,什么触发器.存储过程,都没实用上.看看其她小伙伴的,七层实现登录?那是什么东东,相比較我的三层而言,多了两倍 ...

  8. VB.NET 机房收费系统项目总结

    VB.NET机房收费系统项目总结 从2013年5月3日——2013年8月20日历时三个多月的.NET机房收费系统终于完成了.项目做完了,真有一种如释重负的感觉. 下面我将从文档.UML图,代码这三个方 ...

  9. VB.NET版机房收费系统---导出Excel表格

    datagridview,翻译成中文的意思是数据表格显示,使用DataGridView控件,能够显示和编辑来自不同类型的数据源的表格,将数据绑定到DataGridView控件很easy和直观,大多数情 ...

随机推荐

  1. 一步步实现自己的ORM(一)

    最近在研究ORM,尝试着自己开发了一个简单的ORM.我个人不喜欢EF因为跟不上EF升级太快了,再说公司里还停留在c# 3.5时代,对于NHibernate配置太复杂看到就头晕,就心生自己做一个ORM的 ...

  2. 前端之CSS字体和文本类属性

    一.字体类属性: 1.字体类型: font-family:字体1,字体2,字体3; 常用写法: font-family:"微软雅黑",Arial; 注:a) 多个字体之间用逗号分隔 ...

  3. Android WiFi使用记录

    最近在做Android的WiFi部分的开发,连接的工具类参照了这个文章的工具类. http://www.cnblogs.com/zhuqiang/p/3566686.html 开发中碰上的一些问题,在 ...

  4. (四)maven之查找jar包坐标,选择jar包版本

    ①    先访问http://www.mvnrepository.com/  ,这个地址是maven的公共库. ②   以spring core的jar包为例.在页面的最上方的中间,输入spring ...

  5. Mybatis-Generator逆向生成Po,Mapper,XMLMAPPER(idea)

    前文有一篇手工生成的说明,地址: http://www.cnblogs.com/xiaolive/p/4874605.html, 现在这个补充一下在idea里面的自动版本的数据库逆向生成工具: 一.g ...

  6. SVN中的check out与export的区别

    http://blog.csdn.net/zndxlxm/article/details/7763116 check out跟check in对应,export跟import对应. check out ...

  7. 树形DP 统计树中长度为K的路径数量——Distance in Tree

    一.问题描述 给出一棵n个节点的树,统计树中长度为k的路径的条数(1<=n<=50000 , 1<=k<=500). 二.解题思路 设d[i][k]表示以i为根节点长度为k的路 ...

  8. C#背景图片自适应

    1.选中窗体修改属性 2.在load添加代码 private void Form1_Load(object sender, EventArgs e) { this.BackgroundImageLay ...

  9. SpringBoot入门,新建SpringBoot项目

    一.在Spring Initializr中创建初始化项目 https://start.spring.io/ 二.通过maven导入Idea中(解压后的项目) 解压文件 黄色的为项目需要的真正的代码 , ...

  10. Java中的线程--线程的互斥与同步通信

    Java中的线程之前也提到过,但是还是想再详细的学习一下,跟着张孝祥老师,系统的再学习一下. 一.线程中的互斥 线程安全中的问题解释:线程安全问题可以用银行中的转账 例题描述: 线程A与线程B分别访问 ...