Живот

Локално време: Како рећи тренутно време у Перлу

Локално време: Како рећи тренутно време у Перлу

Перл има корисну уграђену функцију за проналажење тренутног датума и времена у вашим скриптама. Међутим, када говоримо о проналажењу времена, говоримо о времену које је тренутно подешено на машини која покреће скрипту. На пример, ако покрећете свој Перл скрипту на локалној машини, лоцалтиме ће вратити тренутно време које сте поставили и вероватно подесити у вашу тренутну временску зону.

Када покренете исту скрипту на веб серверу, можда ћете установити да је локално време искључено од локалног времена на вашем рачунару. Сервер је можда у другој временској зони или је постављен погрешно. Свака машина може имати потпуно другачију представу о томе шта је локално време и може бити потребно подешавање, било унутар скрипте или на самом серверу, да би се оно прилагодило ономе што очекујете.

Функција лоцалтиме враћа листу пуну података о тренутном времену, од којих ће неке требати прилагодити. Покрените програм испод и видећете сваки елемент на листи одштампан на линији и раздвојен размацима.

#! / уср / лоцал / бин / перл
@тимеДата = лоцалтиме (време);
принт јоин (", @тимеДата);

Требали бисте видети нешто слично овоме, мада би број могао бити веома различит.

20 36 8 27 11 105 2 360 0

Ови елементи текућег времена су, како би:

  • Секунди минуту
  • Минут за сат времена
  • Сати иза поноћи
  • Дан у месецу
  • Месеци протеклог почетка године
  • Број година од 1900
  • Број дана од почетка недеље (недеља)
  • Број дана од почетка године
  • Без обзира да ли је активна дневна светлост или не

Дакле, ако се вратимо на пример и покушамо да га читамо, видећете да је 27. децембра 2005. 8:36:20, прошло је два дана у недељу (уторак), а прошло је 360 дана од почетка године. Љетно рачунање времена није активно.

Чинећи Перл Лоцалтиме читљив

Неколико елемената у низу које враћа локално време помало је непријатно за читање. Ко би мислио о текућој години с обзиром на број протеклих 1900. године? Погледајмо пример који нам датум и време чине јаснијим.

#! / уср / лоцал / бин / перл

@монтхс = кв (јануар феб. мар. апр. мај. јул. август. септембар. октобар. новембар.);

@веекДаис = кв (нед пон нед сре пет пет пет нед);

($ други, $ минут, $ сат, $ данОфМонтх, $ месец, $ иеарОффсет, $ даиОфВеек, $ даиОфИеар, $ даилигхтСавингс) = лоцалтиме ();

$ иеар = 1900 + $ иеарОффсет;

$ тхеТиме = "$ сат: $ минута: $ секунда, $ недељаДневни $ данОфВеек $ месеци $ месец $ данОмесец, $ година";

исписује $ тхеТиме;

Када покренете програм, требали бисте видети много читљивији датум и време као што је овај:

9:14:42, сриједа, 28. децембра 2005. године

Па шта смо урадили да створимо ову читљивију верзију? Прво припремамо два низа са именима месеци и дана у недељи.

@монтхс = кв (јануар феб. мар. апр. мај. јул. август. септембар. октобар. новембар.);

@веекДаис = кв (нед пон нед сре пет пет пет нед);

Пошто функција лоцалтиме враћа ове елементе у вредностима од 0-11 до 0-6, они су савршени кандидати за низ. Вриједност коју је вратило локално вријеме може се користити као нумеричка адреса за приступ исправном елементу у низу.

$ монтхс $ месец $ веекДаис $ даиОфВеек

Следећи корак је добијање свих вредности из лоцалтиме функције. У овом примеру користимо пречицу Перл да аутоматски поставимо сваки елемент у лоцалтиме низу у своју променљиву. Одабрали смо имена тако да је лако запамтити који је то елемент.

($ други, $ минут, $ сат, $ данОфМонтх, $ месец, $ иеарОффсет, $ даиОфВеек, $ даиОфИеар, $ даилигхтСавингс) = лоцалтиме ();

Такође морамо да прилагодимо вредност године. Запамтите да локално време враћа број година од 1900. године, тако да да бисмо пронашли текућу годину, требаћемо да додамо 1900 вредности која нам је дата.

$ иеар = 1900 + $ иеарОффсет;

Како рећи тренутно време ГМ-а у Перлу

Рецимо да желите да избегнете све могуће конфузије временске зоне и преузмете контролу над тим надокнадом. Добијање тренутног времена по локалном времену увек ће вратити вредност која се заснива на подешавањима временске зоне на машини - сервер у САД ће се вратити један пут, док ће сервер у Аустралији вратити један скоро цео дан различит због разлика у временској зони.

Перл има другу згодну функцију казивања времена која ради на потпуно исти начин као и локално време, али уместо да враћа време одређено за временску зону ваше машине, враћа универзално координисано време (скраћено УТЦ, такође названо Греенвицх Меан Тиме или ГМТ) . Једноставно, функција се зовегмтиме.

#! / уср / лоцал / бин / перл

@тимеДата = гмтиме (време);

принт јоин (", @тимеДата);

Осим чињенице да ће враћено време бити исто на свим машинама и у ГМТ-у, нема разлике између функција гмтиме и лоцалтиме. Сви подаци и конверзије се обављају на исти начин.

#! / уср / лоцал / бин / перл

@монтхс = кв (јануар феб. мар. апр. мај. јул. август. септембар. октобар. новембар.);

@веекДаис = кв (нед пон нед сре пет пет пет нед);

($ други, $ минут, $ сат, $ данОфМонтх, $ месец, $ годинаОффсет, $ даиОфВеек, $ даиОфИеар, $ даилигхтСавингс) = гмтиме ();

$ иеар = 1900 + $ иеарОффсет;

$ тхеГМТиме = "$ сат: $ минута: $ секунда, $ седмицаДневно $ данОфВеек $ месеци $ месец $ данОфМонтх, $ година";

исписује $ тхеГМТиме;

  1. лоцалтиме ће вратити тренутно време на машини која покреће скрипту.
  2. гмтиме ће вратити универзално средње време по Греенвицху, или ГМТ (или УТЦ).
  3. Повратне вредности можда нису баш оно што очекујете, па се побрините да их претворите по потреби.