2011-10-06 53 views
12

Có cách nào dễ dàng để có định dạng đúng cho một iCal DTSTART sử dụng ngày php không?PHP Ngày theo định dạng ngày tháng iCal cho DTSTART

Tôi cần định dạng giống như: 20111008T110000 hoặc 20111008 (điều đó dễ dàng) nếu tôi không có thời gian.

Ngày PHP có cách nhanh chóng để thực hiện điều này, cụ thể là ngày thêm thời gian hoặc xóa nó khi cần thiết?

+0

Ngày PHP là dấu thời gian, nó luôn chứa thời gian bao gồm. giây. Bạn đang tìm kiếm cái gì? – hakre

+0

Tôi nghĩ rằng các câu trả lời dưới đây cung cấp những gì tôi đang tìm kiếm. –

Trả lời

18

Không có bất kỳ chức năng hoặc định dạng ngày gốc nào của PHP mà tôi biết, vì vậy bạn sẽ cần phải tạo chức năng của riêng mình. Một cái gì đó như thế này:

function getIcalDate($time, $incl_time = true) 
{ 
    return $incl_time ? date('Ymd\THis', $time) : date('Ymd', $time); 
} 

Như hakre đã chỉ ra trong một nhận xét, định dạng ngày không thể phân biệt được logic đằng sau điều đó.

+0

không phải là bạn thiếu một Z ở cuối? –

+6

@DanyKhalife: Theo [RFC] (http://www.ietf.org/rfc/rfc2445.txt), có một số biểu mẫu được chấp nhận cho giá trị ngày giờ. Cái không có 'Z' được gọi là "ngày tháng với giờ địa phương", có nghĩa là không có thông tin múi giờ liên quan đến nó. Thêm dấu 'Z' đặt ngày giờ vào UTC ("ngày có giờ UTC"). Cuối cùng, bạn có thể xác định múi giờ một cách rõ ràng ("ngày có tham chiếu múi giờ và múi giờ địa phương"). – Viktor

+0

ồ, thật tuyệt khi biết, tôi nên dành nhiều thời gian đọc những chi tiết sau: D –

-2

Đây có thể là bạn đang tìm kiếm linkthis cũng có thể giúp bạn.

chức năng mktime để tạo dấu thời gian như bạn muốn bao gồm thời gian hoặc chỉ ngày cho nó.

+0

Bỏ phiếu bình chọn, câu hỏi đã yêu cầu định dạng thời gian cho DTSTART theo http://tools.ietf.org/html/rfc2445 – AshHimself

+0

Việc đặt liên kết không phải là cách hay để trả lời. Liên kết có thể bị lỗi thời hoặc bị hỏng theo thời gian. – ionize

4
date('Ymd\THis', time()) 

Bạn có thể thay thế time() bằng dấu thời gian của riêng bạn.

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