当前位置: 首页 > 知识库问答 >
问题:

PHP将时间转换成时间段[关闭]

陈誉
2023-03-14

询问代码的问题必须表明对正在解决的问题的理解程度最低。。包括尝试的解决方案、它们不起作用的原因以及预期的结果。另请参见:堆栈溢出问题检查表

似乎有很多信息将一个时间段转换为一个时间,但不是相反。

我需要做的一个例子是把120分钟转换成P0DT2H0M0S。和13:10进入P0DT13H10M0S。以及进入PT2H0M0S的120分钟。

有什么快速简单的方法吗?

共有2个答案

丁星火
2023-03-14

获取ISO-8601时间间隔持续时间的最简单方法是使用方法createFromDateString

echo getISO8601duration_withZeros("3 year 20 day 15 minute"); # P3Y0M20DT0H15M0S
echo getISO8601duration_withZeros("1 hour 120 minutes");      # P0Y0M0DT1H120M0S
echo getISO8601duration_withZeros("7 year 5 month 3 day");    # P7Y5M3DT0H0M0S

# 13:10 example
$dt = new DateTime('13:10');
$interval_spec = "{$dt->format('H')} hour {$dt->format('i')} minute";
echo getISO8601duration_withZeros($interval_spec);            # P0Y0M0DT13H10M0S
function getISO8601duration_withZeros($interval_spec) {
    $interval = DateInterval::createFromDateString($interval_spec);
    return $interval->format('P%yY%mM%dDT%hH%iM%sS');
}
  • 带零的示例(上面的代码)
  • 没有零的示例
  • 带有零的示例,带有重新计算的结转点
  • 没有零的示例,带有重新计算的结转点
夏侯臻
2023-03-14

我相信您描述的格式是ISO 8601日期/时间格式。下面是它如何描述间隔。

DateInterval 类的 PHP 文档中,有人分享了一个示例,说明如何以面向对象的方式将字符串转换为 ISO 8601:

http://www.php.net/manual/en/class.dateinterval.php#113415

这是其他人的解决方案,使用函数式而不是面向对象的日期方法:

https://stackoverflow.com/a/13301472/2119660

 类似资料:
  • 问题内容: 我需要一种简便的方法,可以在不使用任何库的情况下将日期时间戳转换为UTC(从服务器所在的任何时区)。 问题答案: 尝试getTimezone和setTimezone,请参见示例 (但这确实使用了一个类) 更新: 没有任何类,您可以尝试这样的事情: 注意:您可能还需要将时区设置回原始

  • 对于国际化的程序,往往有如下的需求: 在某一时区A的用户向系统提交的数据被保存在了服务端的数据库中。同时,系统也保存了时区A的用户提交请求时的GMT。而在另一个时区B的用户要浏览时区A的用户录入的信息。但时间要显示成时区B的本地时间。 对于上面的需求,最简单的方法是将服务端保存的GMT直接转换成时区B的本地时间。对于Web系统。这个工作可以交给JavaScript来完成。也就是说,服务端将服务端保

  • JDK中提供了一个java.util.Date类,该类是Java中用来处理时间的类。在Date类中有很多和日期/时间相关的方法,如getDate、getDay等,但这些方法都是Date类的遗留产物,这些方法在以后的JDK版本中可以被去掉,因此,并不建议在程序中使用这些方法。不过Date类中有少数的方法不在这些方法之列,这些方法仍然可以在程序中放心地使用。其中getTime和setTime方法是经常

  • 问题内容: 关于“ UNIX timestamp to MySQL time”,有很多问题要问。我需要相反的方式,是的…知道吗? 问题答案: 用途: 还要检查一下(以MySQL方式完成)。 http://dev.mysql.com/doc/refman/5.5/en/date-and-time- functions.html#function_unix- timestamp

  • 我从GPS接收机接收到一个时间戳,它以秒后的微秒时间表示:

  • 我试图找出如何在Kotlin中将转换为,这在Java中非常简单,但我在Kotlin中找不到任何等效的。 例如:历元时间戳(1970-01-01以来的秒数)== 在Kotlin中是否有解决方案,或者我是否必须在Kotln中使用Java语法?请给我一个简单的例子来说明如何解决这个问题。提前谢谢。 这个链接不是我问题的答案