问题:调用以下过程并传递一个参数如“2006-11-2-40-55”(表示2006年11月2日2点40分55秒),但每次调用后都得不到想要的时间。不知哪里有问题,望指点!'调整系统日期
Public Sub SetComputerTime(newDate As String) '//newDate格式为:2006-11-2-13-40-55
On Error GoTo Q
    Dim newSysTime As SYSTEMTIME
    Dim s() As String
    
    If newDate = "" Then Exit Sub
    s = Split(newDate, "-")
    With newSysTime
        .wYear = (s(0))
        .wMonth = (s(1))
        .wDay = (s(2))
        .wHour = (s(3))
        .wMinute = (s(4))
        .wSecond = (s(5))
        .wMilliseconds = 0
    End With
    
    Call SetSystemTime(newSysTime)
Q:
    
End Sub

解决方案 »

  1.   

    With newSysTime
            .wYear = (s(0))  '你为什么要在s(0)左右加上括号呢?这样不行吗?.wYear=s(0)
      

  2.   

    这可能楼主的习惯吧。。这是因为时区的原因,,北京时间比标准时间相差八个小时。。
    你可以相应将小时减八后再用API函数设置。。
      

  3.   

    .wHour = .wHour + 8    '北京时间
      

  4.   

    BOOL SetLocalTime(
      CONST SYSTEMTIME *lpSystemTime   // address of local time to set
    );
      

  5.   

    楼主可能是要写入文件写入时间吗?
    SetSystemTime与SetComputerTime是有区别的。具体区别没去研究。
    楼主可以测试一下两个时间的差别。
    如systemtime与filetime一样。他们之间也是有区别的。
    如果你是要修改文件时间我可以提供代码。