【问题标题】:convert a time-string like "11:00" or "14:00" to decimal time like 1.75? [closed]将像“11:00”或“14:00”这样的时间字符串转换为像1.75这样的十进制时间? [关闭]
【发布时间】:2012-09-03 16:25:33
【问题描述】:

我在 php 手册“日期”中找到了这个函数。

<?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 是一个“字符串”(我猜)@987654332 @ 或14:00

如何将这两个值与表示确切日期和时间的时间戳结合起来?

【问题讨论】:

  • 你到底想做什么?在该示例中,1.75 表示时区偏移量,而不是小时数。对我来说,该示例似乎完全忽略了适当的夏令时。
  • 时间戳保存自 epoch(1970 年 1 月 1 日)以来的毫秒数,所以如果你只有几个小时,除非你对 1970 年 1 月 1 日的 iCal 条目没问题,否则它是不够的。跨度>
  • @WebnetMobile.com - 秒,而不是毫秒。这不是 Javascript。请注意,数学假设每小时 3600 次。
  • 在上述代码的情况下是正确的,但我提到了 unix 时间戳的常见含义,它自纪元以来一直保持毫秒。看来我不够精确:)

标签: php date time timestamp icalendar


【解决方案1】:

很高兴看到my post helped you 更进一步!

您正在使用的函数需要Unix time

Unix 时间,或 POSIX 时间,是一种描述实例的系统 时间,定义为自以来经过的秒数 午夜协调世界时 (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;

【讨论】:

    【解决方案2】:

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

    函数 unixToiCal 需要一个 UNIX 时间戳。这是自 1970 年 1 月 1 日格林威治标准时间午夜以来的非闰秒数。有很多方法可以得到这样的东西,但你不能把一天中的时间“转换”成一个时间,比如“14:00”,因为下午 2 点对应于不同日子的不同时间戳。这是绝对的,与午夜无关。

    评论中提到的十进制值是时区偏移。无论如何,这几乎总是一个整数小时,但是如果您正在处理与 UTC 偏移非整数小时数的地方之一,那么您必须将其转换为小时数而不是小时数+分钟。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2021-12-09
        • 2013-05-08
        • 1970-01-01
        • 2016-05-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-23
        • 2019-08-23
        相关资源
        最近更新 更多