Jump to content

_Date_Time_GetFileTime() is returning UTC?


Recommended Posts

Hello

to retrieve the "MILLISECONDS" as well I modified some lines from "DATE.AU3".

 

It's working fine, except that the function seems to return the UTC time stamp of the file checked?

 

 

_NowCalc is returning local time (DST is active right now), so a direct "Age Check" against _NowCalc() is not possible.

 

What's the best / safest approach to convert either UTC to "current local time incuding DST" or vice versa? _Date_Time_GetTimeZoneInformation() ???

#include-once
#include <Date.au3>


$File="C:\temp\TimeTest.txt"
$f=FileOpen($File,2+8)
FileWriteLine($f,_NowCalc())
FileClose($f)


_NowCalc()


$Content=FileRead($File)
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $Content = ' & $Content & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
$TS=FileGetTSstringLastModifiedWithMS($File)
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $TS = ' & $TS & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console



Func FileGetTSstringLastModifiedWithMS($_FullFilePathName)
    $h = _WinAPI_CreateFile($_FullFilePathName, 2, 2)
    $aTS = _Date_Time_GetFileTime($h)
    _WinAPI_CloseHandle($h)
    $aDate = _Date_Time_FileTimeToArray($aTS[2])
    If IsArray($aDate) and UBound($aDate) > 6 Then
        Return StringFormat("%04d/%02d/%02d %02d:%02d:%02d.%03d", $aDate[2], $aDate[0], $aDate[1], $aDate[3], $aDate[4], $aDate[5], $aDate[6])
    Else
        SetError(1)
        Return
    EndIf
EndFunc   ;==>FileGetTSstringLastModifiedWithMS

 

_FileGetTime() is not an option, as I need the milliseconds as well, as files may show up within the same second.

<edit> It would be preferred to have a robust solution to use "local time", taking care of DST</edit>

Regards, Rudi.

Edited by rudi

Earth is flat, pigs can fly, and Nuclear Power is SAFE!

Link to post
Share on other sites

Wouldn't it be easier to use the _Date_CompareFileTime function?

Quote

_Date_Time_CompareFileTime
Compares two file times
 

 

If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By masvil
      The script shows the offset from GMT-UTC in standard format through string manipulation.
      #include <Date.au3> ConsoleWrite (_TimeZoneInfo() & @CRLF) Func _TimeZoneInfo() $aInfo = _Date_Time_GetTimeZoneInformation() ConsoleWrite("bias: " & $aInfo[1] & @CRLF) $hours = $aInfo[1] / 60 If $hours = "0" Then $hours = "+00:00" Else If StringInStr($hours, "-") Then $hours = StringReplace($hours, "-", "+") Else $hours = "-" & $hours EndIf If Not StringInStr($hours, ".") Then $hours = $hours & ":00" $hours = StringReplace($hours, ".5", ":30") $hours = StringReplace($hours, ".75", ":45") If StringLen($hours) = 5 Then $hours = StringLeft($hours, 1) & "0" & StringRight($hours, 4) EndIf Return ($aInfo[2] & " (GMT" & $hours & ")") EndFunc ;==>_TimeZoneInfo  
    • By Skysnake
      $sMsg = '2017-09-04 18:42:38' _DateDiff ('h', $sMsg , _NowCalc() ) I could not find anything recent, so I thought I would put it here.
      The '2017-09-04' date is a typical SQL timestamp. The _NowCalc() is a typical AutoIt date calculator.  Much to my surprise and delight, _DateDiff works correctly with these two dates without any prior conversion.
      I am guessing that internally the separating characters (-/) get ignore.
      Does save on additional code.
      Skysnake
×
×
  • Create New...