将时间字符串如“11:00”或“14:00”转换为十进制时间,如1.75?

时间:2012-09-03 16:25:33

标签: php date time timestamp icalendar

我在php-manual“date”上找到了这个函数。

<?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;        

    } 
?>

我有一个像$event_time[0]这样的变量,它包含一个像14:00这样的时间格式,这将是下午2点。如何将此时间格式转换为十进制以将其传递给上面的unixToiCal()函数?

感谢您的回复。

更新 好吧,好像我完全糊涂了。谢谢你们清理事情。没有真正得到函数的第二个参数。我来自奥地利,所以UTC偏移应该是+2小时,对。

我对strtotime()方法有另一个问题。

我有两个变量...... $time$date ...我遇到的问题是$date已经是1347667200$time之类的时间戳。一个“字符串”(我猜)11:0014:00

如何将这两个值组合成两个表示确切日期和时间的时间戳?

3 个答案:

答案 0 :(得分:1)

很高兴再次看到my post helped you

您正在使用的功能需要Unix time

  

Unix时间或POSIX时间是用于描述实例的系统   time,定义为自之后经过的秒数   午夜世界协调时间(UTC),1970年1月1日,不是   计算闰秒。

因此单独一个时间值对你没有帮助,你也需要一个日期组件,否则就无法计算unix时间。

以下是如何在php中将内容转换为unix时间的示例:

$date_to_unixtime = strtotime('3rd September 2012 18:33:34 PM (UTC)'); 

<强>更新

您可以在php中为unix时间添加时间值,如下所示:

$your_new_timestamp = $your_current_timestamp 
    + ($hours * 3600) 
    + ($minutes * 60)
    + $seconds;

答案 1 :(得分:0)

你似乎有点困惑。你想做什么?

函数unixToiCal需要UNIX时间戳。这是1970年1月1日格林威治标准时间午夜以来的非闰秒数。有很多方法可以获得这样的东西,但你不能将“14:00”之类的时间“转换”为一个,因为下午2点对应不同日期的不同时间戳。这是绝对的,而不是相对于午夜。

评论中提到的小数值是时区偏移量。无论如何,这几乎总是会花费整整几个小时,但是如果你正在处理一个与UTC相差非整数小时的地方,那么你必须把它转换成几小时而不是几小时+分钟。

答案 2 :(得分:0)

您可以使用strtotime将日期和时间字符串转换为时间戳。