2009-03-02 22 views

Trả lời

7

DateTime trên CPAN sức của một số sử dụng. Nó cũng có về các phương pháp thao tác/dịch thuật thời gian.

Chỉ cần tạo DateTime sử dụng các phần của bạn và gọi $ datetime-> formatter ("% s");

+0

Có. Khi nghi ngờ, hãy sử dụng DateTime - hệ thống thời gian One True Perl. Nhảy qua lại giữa các công cụ ngày/giờ crufty là địa ngục. – Anirvan

14

Bạn có thể sử dụng chức năng timelocal trong mô-đun CPAN Time::Local.

TÊN

Time :: địa phương - tính toán hiệu quả thời gian từ giờ địa phương và giờ

SYNOPSIS

$time = timelocal($sec,$min,$hour,$mday,$mon,$year); 
$time = timegm($sec,$min,$hour,$mday,$mon,$year); 

MÔ TẢ

Module này cung cấp chức năng mà là nghịch đảo của built-in perl chức năng localtime() và gmtime(). Chúng chấp nhận ngày tháng là một mảng gồm sáu phần tử và trả lại giá trị thời gian (2) tương ứng trong vài giây kể từ khi hệ thống epoch (Midnight, January 1, 1970 GMT trên Unix chẳng hạn). Giá trị này có thể dương hoặc âm, mặc dù POSIX chỉ yêu cầu hỗ trợ cho giá trị dương, vì vậy, trước ngày thời đại của hệ thống có thể không hoạt động trên tất cả các hệ điều hành .

Có giá trị cụ thể là chú ý đến phạm vi dự kiến ​​cho các giá trị được cung cấp. Giá trị cho ngày của tháng là ngày thực tế (ví dụ: 1,.31), trong khi tháng là số tháng kể từ tháng 1 (0,11). Điều này phù hợp với các giá trị trả lại từ localtime() và gmtime().

Lưu ý:POSIX::mktime là một chỉ là một wrapper quanh mktime() chức năng thư viện C của bạn. Thời gian :: Địa phương là triển khai thuần túy Perl và luôn trả về kết quả phù hợp với số localtime của Perl. Ngoài ra, Time :: Local cung cấp gmtime, trong khi mktime chỉ hoạt động theo giờ địa phương. (Vâng, bạn có thể thử thay đổi $ENV{TZ}, nhưng điều đó không hoạt động trên một số hệ thống.)

+0

Tôi không biết sự khác biệt, nếu có, tồn tại giữa Thời gian :: Địa phương và POSIX :: mktime, nhưng tôi đã luôn luôn sử dụng Thời gian :: Địa phương và không bao giờ có bất kỳ vấn đề với nó. –

+1

Lưu ý: Giờ địa phương của Perl chỉ là một trình bao bọc xung quanh hàm localtime hoặc localtime_r của thư viện C và luôn trả về kết quả phù hợp với mktime của C. :) – ysth

+1

Vâng, có một bản vá làm cho an toàn của YL là localtime y2038, ngay cả khi phiên bản thư viện C của bạn không.Tôi không nghĩ rằng nó được tích hợp theo mặc định, nhưng nó có khả năng sẽ được. Nó sửa lỗi Time :: Local, nhưng tôi không nghĩ rằng nó vá lỗi POSIX :: mktime. – cjm

Các vấn đề liên quan