PHP的:写的.ics(iCal中)文件? 日期格式化?(php: writing a .ics

2019-10-17 04:28发布

我没有太大的PHP专家和有烦恼格式化的文件的.ics的日期。

所以我有一个生成每个日历条目的循环$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;

我只是格式化,这就是为什么我得到completey摆脱它,希望你们可以帮助我的日期问题。

我有两个功能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

有人可以帮我在这里? 我会很感激一些帮助。

Answer 1:

基本上你想要一个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;       

} 

也许这会有所帮助。



文章来源: php: writing a .ics (iCal) file? Date-formatting?