Преминаване към Unix timestamp и обратно при различните езици

Доста често се налага да се конвертира време в Unix еквивалента, който представлява броя на секундите, изминали от01.01.1970 00:00:00 до сега*. В езици като PHP, Ruby, Perl и т.н. това не е проблем, но при VBScript, ASP си е направо кошмарна/досадна задача.

* Без да се броят т.нар. Leap Seconds

Случайно попаднах на един хубав сайт, който показва начините за пресмятане на Unix timestamp в различните езици, включително бази данни:

Epoch Converter: [http://www.epochconverter.com/ ]

Искам да вметна нещо. Ако разгледаме функцията:

function epoch2date(myEpoch)
epoch2date = DateAdd(“s”, myEpoch, “01/01/1970 00:00:00”)
end function

няма да забележим нищо особено…на пръв поглед! Имайте предвид, че повечето функции за конвертиране и работа с време ааааадски много зависят от регионалните настройки на Windows-а Ви. Т.е. един и същи скрипт може да даде грешка на един компютър, а на друг да работи нормално. Само заради формата на времето т.е. дали ще има наклонени черти, дали ще бъде година, месец, ден и т.н.

Можете да се измъкнете елегантно от ситуацията ако Вие ръчно си “правите” времето, компонент по компонент. Например за VBScript това изглежда така:

myDateTime = DateSerial(1970, 1, 1) + TimeSerial(0, 0, 0)

а по-горният пример се променя:

function epoch2date(myEpoch)
epoch2date = DateAdd(“s”, myEpoch, DateSerial(1970, 1, 1) + TimeSerial(0, 0, 0))
end function

Използвайте на воля 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *