Localtime: Perl Saati

click fraud protection

Perl komut dosyalarınızdaki geçerli tarih ve saati bulmak için kullanışlı bir yerleşik işleve sahiptir. Ancak, zamanı bulma hakkında konuştuğumuzda, komut dosyasını çalıştıran makinede geçerli olarak ayarlanan zamandan bahsediyoruz. Örneğin, Perl betiğinizi yerel makinenizde çalıştırıyorsanız, localtime belirlediğiniz geçerli saati döndürür ve muhtemelen geçerli saat diliminize ayarlanır.

Bir web sunucusunda aynı komut dosyasını çalıştırdığınızda, masaüstü sisteminizde localtime değerinin kapalı olduğunu görebilirsiniz. Sunucu farklı bir saat diliminde olabilir veya yanlış ayarlanmış olabilir. Her makine yerel saatin ne olduğu hakkında tamamen farklı bir fikre sahip olabilir ve betiğin içinde veya sunucunun kendisinde beklediğinizle eşleşmesi için bazı ayarlamalar yapmak gerekebilir.

Localtime işlevi, geçerli saatle ilgili verilerle dolu bir liste döndürür; bunların bazıları ayarlanması gerekir. Aşağıdaki programı çalıştırın ve listedeki her öğeyi satırda basılı ve boşluklarla ayrılmış olarak görürsünüz.

instagram viewer
#! / Usr / local / bin / perl
@timeData = localtime (zaman);
print join ('', @timeData);

Sayı çok farklı olsa da, buna benzer bir şey görmelisiniz.

20 36 8 27 11 105 2 360 0

Mevcut zamanın bu unsurları sırasıyla:

  • Dakikayı geçen saniye
  • Saati geçen dakika
  • Gece yarısından önceki saatler
  • Ayın günü
  • Yılın başlangıcını geçen aylar
  • 1900'den bu yana geçen yıl sayısı
  • Haftanın başından bu yana geçen gün sayısı (Pazar)
  • Yıl başından bu yana geçen gün sayısı
  • Öyle ya da böyle Gün ışığından yararlanma aktif

Bu yüzden örneğe dönersek ve okumaya çalışırsak, 27 Aralık 2005 günü sabah 8:36:20, bunun Pazar (Salı) günü 2 gün geçtiğini ve yıl. Yaz saati uygulaması etkin değil.

Perl Localtime'ı Okunabilir Yapma

Dizideki localtime'ın döndürdüğü öğelerin birkaçını okumak biraz gariptir. 1900'ü geçen yıl sayısı açısından bu yılı kim düşünebilirdi? Tarihimizi ve saatimizi daha net hale getiren bir örneğe bakalım.

 #! / Usr / local / bin / perl

 @months = qw (Ocak Şub Mart Nis Mayıs Haziran Temmuz Ağustos Eylül Ekim Kasım Aralık);

 @weekDays = qw (Paz Pzt Sal Çar Per Cum Cmt Paz);

 ($ saniye, $ dakika, $ saat, $ dayOfMonth, $ ay, $ yearOffset, $ dayOfWeek, $ dayOfYear, $ daylightSavings) = localtime ();

 $ yıl = 1900 + $ yılOfset;

 $ theTime = "$ saat: $ dakika: $ saniye, $ haftaGün [$ dayOfWeek] $ ay [$ ay] $ dayOfMonth, $ yıl";

 print $ theTime; 

Programı çalıştırdığınızda, çok daha okunabilir bir tarih ve saat görmelisiniz:

 28 Aralık 2005 9:14:42 

Peki bu daha okunabilir sürümü oluşturmak için ne yaptık? İlk olarak, ayların ve haftanın günlerinin isimlerini içeren iki dizi hazırlarız.

 @months = qw (Ocak Şub Mart Nis Mayıs Haziran Temmuz Ağustos Eylül Ekim Kasım Aralık);

 @weekDays = qw (Paz Pzt Sal Çar Per Cum Cmt Paz); 

Localtime işlevi bu öğeleri sırasıyla 0-11 ve 0-6 arasında değişen değerlerde döndürdüğünden, bir dizi için mükemmel adaylardır. Localtime tarafından döndürülen değer, dizideki doğru öğeye erişmek için sayısal bir adres olarak kullanılabilir.

 $ ay [$ ay] $ haftaGün [$ dayOfWeek]


Bir sonraki adım, localtime işlevinden tüm değerleri almaktır. Bu örnekte, localtime dizisindeki her öğeyi otomatik olarak kendi değişkenine yerleştirmek için bir Perl kısayolu kullanıyoruz. Hangi öğenin hangisi olduğunu hatırlamak için isimler seçtik.

 ($ saniye, $ dakika, $ saat, $ dayOfMonth, $ ay, $ yearOffset, $ dayOfWeek, $ dayOfYear, $ daylightSavings) = localtime ();


Ayrıca yılın değerini de ayarlamamız gerekiyor. Localtime'ın 1900'den bu yana geçen yıl sayısını döndürdüğünü unutmayın, bu nedenle mevcut yılı bulmak için, bize verilen değere 1900 eklememiz gerekecek.

 $ yıl = 1900 + $ yılOfset;

Perl Şu anki GM Saati Nasıl Anlaşılır

Diyelim ki tüm olası saat dilimi karışıklıklarından kaçınmak ve ofseti kendiniz kontrol etmek istiyorsunuz. Yerel saatte geçerli saati almak her zaman makinenin saat dilimi ayarlarına dayalı bir değer döndürür - ABD bir kez geri dönerken, Avustralya'daki bir sunucu saat dilimi nedeniyle neredeyse tam bir gün farklı bir değer döndürür farklılıklar.

Perl, yerel saatle tamamen aynı şekilde çalışan ikinci bir kullanışlı zaman belirleme işlevine sahiptir, ancak makinenizin saat dilimi, geri döner Eşgüdümlü Evrensel Zaman (UTC olarak kısaltılır, Greenwich Ortalama Saati veya GMT olarak da adlandırılır). Sadece fonksiyon denir gmtime.

 #! / Usr / local / bin / perl

 @timeData = gmtime (zaman);

 print join ('', @timeData); 

Döndürülen sürenin her makinede ve GMT'de aynı olması dışında, gmtime ve localtime işlevleri arasında bir fark yoktur. Tüm veriler ve dönüşümler aynı şekilde yapılır.

 #! / Usr / local / bin / perl

 @months = qw (Ocak Şub Mart Nis Mayıs Haziran Temmuz Ağustos Eylül Ekim Kasım Aralık);

 @weekDays = qw (Paz Pzt Sal Çar Per Cum Cmt Paz);

 ($ saniye, $ dakika, $ saat, $ dayOfMonth, $ ay, $ yearOffset, $ dayOfWeek, $ dayOfYear, $ daylightSavings) = gmtime ();

 $ yıl = 1900 + $ yılOfset;

 $ theGMTime = "$ saat: $ dakika: $ saniye, $ haftaGün [$ dayOfWeek] $ ay [$ ay] $ dayOfMonth, $ yıl";

 print $ theGMTime; 

  1. localtime, betiği çalıştıran makinede geçerli yerel saati döndürür.
  2. gmtime, evrensel Greenwich Saati veya GMT (veya UTC) değerini döndürür.
  3. Dönüş değerleri beklediğiniz gibi olmayabilir, bu nedenle bunları gerektiğinde dönüştürdüğünüzden emin olun.
instagram story viewer