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

click fraud protection

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

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

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

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

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

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. Повратне вредности можда нису баш оно што очекујете, па се побрините да их претворите по потреби.
instagram story viewer