Perl Cd Bookshelf [Electronic resources] نسخه متنی

اینجــــا یک کتابخانه دیجیتالی است

با بیش از 100000 منبع الکترونیکی رایگان به زبان فارسی ، عربی و انگلیسی

Perl Cd Bookshelf [Electronic resources] - نسخه متنی

| نمايش فراداده ، افزودن یک نقد و بررسی
افزودن به کتابخانه شخصی
ارسال به دوستان
جستجو در متن کتاب
بیشتر
تنظیمات قلم

فونت

اندازه قلم

+ - پیش فرض

حالت نمایش

روز نیمروز شب
جستجو در لغت نامه
بیشتر
لیست موضوعات
توضیحات
افزودن یادداشت جدید



3.2. Converting DMYHMS to Epoch Seconds


3.2.1. Problem


You want to
convert a date, a time, or both with distinct values for day, month,
year, etc. to Epoch
seconds.

3.2.2. Solution





Use the timelocal or
timegm functions in the standard Time::Local
module, depending on whether the date and time is in the current time
zone or in UTC.

use Time::Local;
$TIME = timelocal($sec, $min, $hours, $mday, $mon, $year);
$TIME = timegm($sec, $min, $hours, $mday, $mon, $year);

3.2.3. Discussion


The built-in function localtime converts an Epoch
seconds value to distinct DMYHMS values; the
timelocal subroutine from the standard Time::Local
module converts distinct DMYHMS values to an Epoch seconds value.
Here's an example that shows how to find Epoch seconds for a time in
the current day. It gets the day, month, and year values from
localtime:

# $hours, $minutes, and $seconds represent a time today,
# in the current time zone
use Time::Local;
$time = timelocal($seconds, $minutes, $hours, (localtime)[3,4,5]);

If you're passing month and year values to
timelocal, it expects values with the same range
as those which localtime returns. Namely, months
start at 0, and years have 1900 subtracted from them.

The timelocal function
assumes the DMYHMS values represent a time in the current time zone.
Time::Local also exports a timegm subroutine that
assumes the DMYHMS values represent a time in the UTC time zone.
Unfortunately, there is no convenient way to convert from a time zone
other than the current local time zone or UTC. The best you can do is
convert to UTC and add or subtract the time zone offset in seconds.

This code illustrates both the use of timegm and
how to adjust the ranges of months and years:

# $day is day in month (1-31)
# $month is month in year (1-12)
# $year is four-digit year e.g., 1967
# $hours, $minutes and $seconds represent UTC (GMT) time
use Time::Local;
$time = timegm($seconds, $minutes, $hours, $day, $month-1, $year-1900);

As explained in the introduction, Epoch seconds cannot hold values
before Fri Dec
13 20:45:52
1901 or after Tue
Jan 19
03:14:07 2038. Don't convert
such dates to Epoch seconds—use a Date:: module from CPAN, and
do your calculations with that instead.

3.2.4. See Also


The documentation for the standard Time::Local module (also in
Chapter 32 of Programming Perl); convert in
the other direction using
Recipe 3.3



3.1. Finding Today's Date3.3. Converting Epoch Seconds to DMYHMS




Copyright © 2003 O'Reilly & Associates. All rights reserved.

/ 875