Sign in to follow this  
Followers 0
cluelessone

How can I subtract one time (say 22:05:58) from the current time (say 08:02:22) correctly?

6 posts in this topic

VERY new to this so I'll try my best to try to find things in the help as best I can but this one has me a little flustered since I'm certain that it's simple as hell and I just don't see it.

I'm simply logging the current date and time to a file every 30 minutes. In it's current state it's doing this to a loacl file but when it's working I want it to go to a network share but that's not what this post is about...

Each time it reads the current time into a var, I want it to compare the last time that it was written to the current time and then if that's over the expected value, it writes a comment into the file before it writes the new current date/time.

I was just grabbing the last line and grabbing the time which comes back correctly but when I subtract the current time to the last time it always comes back as 0 since it's only doing the hour and not the minutes and seconds.

Is there a specific way to say to use the entire time? 11:38:08 - 11:08:28 does not equal 0. lol

Share this post


Link to post
Share on other sites



If you already have some code then please post so we can check where the problem is.


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

$i = 1
While $i < 10
;Get Current Date and Time
   $time = @hour & ":" & @MIN & ":" & @SEC
   $date = @MON & "/" & @MDAY & "/" & @YEAR
;MsgBox(4096, "Date-Time", $date & " - " & $time)
;Create a combined date/time
   $datetime = $date & @TAB & $time
;MsgBox(4096, "Date/Time", $datetime)

$file = FileOpen("test.txt", 0)
; Check if file opened for writing OK
If $file = -1 Then
  MsgBox(0, "Error", "Unable to open file.")
  Exit
EndIf
$last_line = FileReadLine ($file, -1)
;MsgBox(4096, "LastLine", $last_line)
$avParts = StringSplit($last_line, @TAB)
;MsgBox(4096, "LastLine", $avParts[2])
$last_time = $avParts[2]
MsgBox(4096, "Last_Time", $avParts[2])
MsgBox(4096, "Time", $time)
$elapsedtime = $time - $avParts[2]
MsgBox(4096, "Elapsed", $elapsedtime)
FileClose($file)
$file = FileOpen("test.txt", 1)
; Check if file opened for writing OK
If $file = -1 Then
  ;MsgBox(0, "Error", "Unable to open file.")
  Exit
EndIf
If $elapsedtime > 1 Then
  FileWriteLine ($file, "NO CONNECTIVITY FOR" & " " & $elapsedtime & "MINUTES")
EndIf
FileWriteLine($file, $datetime)
FileClose($file)
Sleep(121000)
WEnd
Exit

Share this post


Link to post
Share on other sites

If you can store all dates as date and time you can use function _DateDiff to calculate the difference. Please check the help file for how the function works.

Make sure to store date/time as "YYYY/MM/DD HH:MM:SS" - so the tab you use has to be replaced by a space.


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

Thanks!!! I got done what I needed done. That made it sooo much easier. Here's what I came up with. It seems to work ok but I'll test it quite a bit before putting it where it needs to go.

<P>#include &lt;date.au3&gt;</P>
<P><BR>While 1<BR> ; Get current Date/Time<BR>   $datetime =
@YEAR &amp; "/" &amp; @MON &amp; "/" &amp; @MDAY &amp; " " &amp; @HOUR &amp; ":"
&amp;  @MIN &amp; ":" &amp; @SEC<BR>   ;MsgBox(4096, "Date/Time",
$datetime)</P>
<P><BR> ; Open file to read last date/time entry<BR> $file =
FileOpen("test.txt", 0)</P>
<P> ; Check if file opened for reading OK<BR> If $file = -1
Then<BR>    While
1<BR>  Sleep(50000)<BR>  $file = FileOpen("test.txt",
0)<BR>  ;MsgBox(4096, "Testing", "I'm Line
26!")<BR>  ExitLoop<BR>    WEnd<BR> EndIf</P>
<P><BR> ;MsgBox(4096, "Testing", "I'm Line 31!")</P>
<P> $last_line = FileReadLine ($file, -1)<BR> ;MsgBox(4096,
"LastLine", $last_line)</P>
<P> ; Calculate difference between the current Date/Time and the last
successful entry in the log<BR> $elapsedseconds = _DateDiff ("s",
$last_line, $datetime)<BR> ;MsgBox(4096, "ElapsedSec", $elapsedseconds)</P>
<P> $elapsedhours = $elapsedseconds / 3600<BR> ;MsgBox(4096,
"ElapsedHrs", $elapsedhours)</P>
<P> FileClose($file)</P>
<P> ; Open file to write current Date/Time and any notations concerning
extended outages<BR> $file = FileOpen("test.txt", 1)</P>
<P> ;Check if file opened for writing OK<BR> If $file = -1
Then<BR>  While 1<BR>   
Sleep(50000)<BR>    $file = FileOpen("test.txt",
1)<BR>    MsgBox(4096, "Testing", "I'm Line
53!")<BR>    ExitLoop<BR>  WEnd<BR> EndIf</P>
<P> ;If last entry was more than 25 minutes ago notate the file of that
fact<BR> If $elapsedseconds &gt; 1500 Then<BR>  FileWriteLine
($file, "NO CONNECTIVITY FOR" &amp; " " &amp; $elapsedhours &amp; "
HOURS")<BR> EndIf</P>
<P> ;Write the current Date/Time to file<BR> FileWriteLine($file,
$datetime)</P>
<P> ;MsgBox(4096, "Testing", "I'm Line 63!")</P>
<P> FileClose($file)</P>
<P><BR> ; Wait 20 minutes before processing program
again<BR> Sleep(1200000)<BR>WEnd</P>
<P>Exit</P>

#include <date.au3>

While 1

; Get current Date/Time

$datetime = @YEAR & "/" & @MON & "/" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC

;MsgBox(4096, "Date/Time", $datetime)

; Open file to read last date/time entry

$file = FileOpen("test.txt", 0)

; Check if file opened for reading OK

If $file = -1 Then

While 1

Sleep(50000)

$file = FileOpen("test.txt", 0)

;MsgBox(4096, "Testing", "I'm Line 26!")

ExitLoop

WEnd

EndIf

;MsgBox(4096, "Testing", "I'm Line 31!")

$last_line = FileReadLine ($file, -1)

;MsgBox(4096, "LastLine", $last_line)

; Calculate difference between the current Date/Time and the last successful entry in the log

$elapsedseconds = _DateDiff ("s", $last_line, $datetime)

;MsgBox(4096, "ElapsedSec", $elapsedseconds)

$elapsedhours = $elapsedseconds / 3600

;MsgBox(4096, "ElapsedHrs", $elapsedhours)

FileClose($file)

; Open file to write current Date/Time and any notations concerning extended outages

$file = FileOpen("test.txt", 1)

;Check if file opened for writing OK

If $file = -1 Then

While 1

Sleep(50000)

$file = FileOpen("test.txt", 1)

MsgBox(4096, "Testing", "I'm Line 53!")

ExitLoop

WEnd

EndIf

;If last entry was more than 25 minutes ago notate the file of that fact

If $elapsedseconds > 1500 Then

FileWriteLine ($file, "NO CONNECTIVITY FOR" & " " & $elapsedhours & " HOURS")

EndIf

;Write the current Date/Time to file

FileWriteLine($file, $datetime)

;MsgBox(4096, "Testing", "I'm Line 63!")

FileClose($file)

; Wait 20 minutes before processing program again

Sleep(1200000)

WEnd

Exit

Share this post


Link to post
Share on other sites

Just a small enhancement:

$datetime = @YEAR & "/" & @MON & "/" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC
can be shortened to
$datetime = _NowCalc()

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


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
Sign in to follow this  
Followers 0