2

我不是 php 专家,在格式化 .ics 文件的日期时遇到了麻烦。

所以我有一个循环,为每个生成一个日历条目$post(在我的例子中 $post 是一个事件)

foreach( $posts as $post ) : setup_postdata($post);
        $ical .= "BEGIN:VEVENT
        UID:" . md5(uniqid(mt_rand(), true)) . "mysite.com
        DTSTAMP:" . gmdate('Ymd').'T'. gmdate('His') . "Z
        DTSTART:".get_event_date($post)."00Z
        DTEND:".get_event_end_date($post)."00Z
        SUMMARY:".get_the_title($post->ID)."
        DESCRIPTION:".get_the_excerpt($post->ID)."
        END:VEVENT";
    endforeach;

我只是格式化日期的问题,这就是我完全摆脱它的原因,希望你们能帮助我。

我有两个函数get_event_date($post)get_event_end_date($post)它们返回一个时间戳,如1258665163. 如何将此时间戳转换为 iCal .ics 文件的正确格式?

此外,我还想添加time每个事件的。这两个函数被调用get_event_time($post)get_event_end_time($post)并且都以以下格式返回时间:11:0014:00

有人可以帮我吗?我真的很感激一些帮助。

4

1 回答 1

3

基本上,您希望将 unix 时间戳转换为为 iCal 指定的格式。

php 手册中有一条关于包含这个小宝石的日期函数的精彩小评论,正是这样做的:

// Converts a unix timestamp to iCal format (UTC) - if no timezone is
// specified then it presumes the uStamp is already in UTC format.
// tzone must be in decimal such as 1hr 45mins would be 1.75, behind
// times should be represented as negative decimals 10hours behind
// would be -10

function unixToiCal($uStamp = 0, $tzone = 0.0) {

    $uStampUTC = $uStamp + ($tzone * 3600);       
    $stamp  = date("Ymd\THis\Z", $uStampUTC);

    return $stamp;       

} 

也许这有帮助。

于 2012-09-02T09:52:29.713 回答