PDA

View Full Version : Solved: Find and convert unix timestamps



Simo Bk
02-12-2008, 06:08 AM
Hi all,

Here is my problem, simple to explain, but I don't think it's as simple to solve.

I have variables that will contain long strings, inside these string will be Unix timestamps, nothing special that delimits where they are gonna be. Only thing is there should always be a DOT and a SPACE before (but doesnt mean a DOT-SPACE is always followed by a date)

Basically, I need a function that will search the string for any number in it. If that number matches a Unix timestamp between 946684800 (01/01/2000 00:00:00) and 4102444800 (01/01/2100 00:00:00), then I should convert it to a regular date in that format dd/mm/yyyy 12:00:00 AM

Basically, the function should take an input like this :

1199254374 Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut mauris. Etiam malesuada nibh id felis. Curabitur laoreet. Mauris rhoncus augue porta purus. Nam ut erat eget lacus sollicitudin lacinia. Cras eget metus quis urna 1324846 varius ullamcorper. Morbi facilisis vehicula quam. 1199277609 Vivamus elementum, magna vel4670 pulvinar accumsan, risus nunc pulvinar nulla, non commodo dolor dui vitae tellus. Nam ultricies. Aenean tortor. 1199286174 Ut luctus sapien ac tortor. Vivamus ipsum erat, blandit eu, auctor vitae, vehicula sit amet, mi. Vivamus lacinia. Nunc varius neque sit amet magna. 1199468394 Quisque neque magna, porta ut, ultrices blandit, temp 465789 us a, massa. 1200071762 Quisque interdum massa. Maecenas aliquam felis non nibh. In tincidunt.

And output something like this :

02/01/2008 6:12:54 AM Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut mauris. Etiam malesuada nibh id felis. Curabitur laoreet. Mauris rhoncus augue porta purus. Nam ut erat eget lacus sollicitudin lacinia. Cras eget metus quis urna 1324846 varius ullamcorper. Morbi facilisis vehicula quam. 02/01/2008 12:49:09 PM Vivamus elementum, magna vel4670 pulvinar accumsan, risus nunc pulvinar nulla, non commodo dolor dui vitae tellus. Nam ultricies. Aenean tortor. 02/01/2008 3:02:54 PM Ut luctus sapien ac tortor. Vivamus ipsum erat, blandit eu, auctor vitae, vehicula sit amet, mi. Vivamus lacinia. Nunc varius neque sit amet magna. 04/01/2008 5:39:54 PM Quisque neque magna, porta ut, ultrices blandit, temp 465789 us a, massa. 11/01/2008 5:16:02 PM Quisque interdum massa. Maecenas aliquam felis non nibh. In tincidunt.

Any help with that? I don't even know where to start... :doh:

Thanks,

Simo

NB. Bold parts are added to make the reading easier, the real string do not have any formatting.

Simo Bk
02-12-2008, 12:23 PM
Hi all,

I ended up finding the solution by myself. For people who may have the same problem, here is my solution :


Function parseUnixTime(varFullLog)
parseUnixTime = ""
fullLogArray = Split(varFullLog, " ")
For x = 0 To UBound(fullLogArray)
'Verify if in the 1104537600 (01/01/2005 00:00:00) and 2147483647 (19/01/2038 03:14:07) range
If (fullLogArray(x) > 1104537600) And (fullLogArray(x) < 2147483647) Then
'Convert Unix Timestamp to Windows time
unixTime = fullLogArray(x)
windowsDate = 25569 + (unixTime / 86400)
fullLogArray(x) = CStr(Format(windowsDate, "dd/mm/yyyy h:nn:ss AM/PM"))
End If
parseUnixTime = parseUnixTime & " " & fullLogArray(x)
Next x
End Function


Thank you,

Simo