将javascript时间函数转换为php

将javascript时间函数转换为php,javascript,php,Javascript,Php,我有一个可以工作的javascript代码,我在网页上使用它来设置按钮的文本。 按钮文本以24小时格式显示时间,添加1小时30分钟,四舍五入至最接近的5分钟。 由于我需要在点击按钮的php代码片段中使用生成的时间,我需要将代码转换为php语法以获得相同的结果 例如,如果现在的时间是15:17,结果应该是16:50 <SCRIPT> var today = new Date(); today.setHours(today.getHours() + 1); tod

我有一个可以工作的javascript代码,我在网页上使用它来设置按钮的文本。 按钮文本以24小时格式显示时间,添加1小时30分钟,四舍五入至最接近的5分钟。 由于我需要在点击按钮的php代码片段中使用生成的时间,我需要将代码转换为php语法以获得相同的结果

例如,如果现在的时间是15:17,结果应该是16:50

<SCRIPT>
    var today = new Date();
    today.setHours(today.getHours() + 1);
    today.setMinutes(today.getMinutes() + 30);
    var coeff = 1000 * 60 * 5;
    var date = "09:07:00";  //or use any other date
    var rounded = new Date(Math.round(today.getTime() / coeff) * coeff)
    var tid_1hour30min_from_now = rounded.toLocaleTimeString([], {hour: '2-digit', minute:'2-digit'});
    var tid_hour = rounded.getHours();
    var tid_minutes = rounded.getMinutes();
    var ater = "Åter"
    var result1hour30minfromnow = ater +" "+ tid_1hour_from_now
</SCRIPT>
但结果不是很好,我在上面的两个脚本中得到了相同的时间。 如何将javascript尽可能地翻译成php


/Kristian

因此,如果您希望在php脚本中单击按钮时获得与按钮相同的时间值,那么只需使用ajax将时间值发送到php文件即可

要使用JQuery插件,请在下面一行中包含

<script src="http://code.jquery.com/jquery-latest.js"></script>

如果我正确阅读代码,您希望在当前时间的基础上增加1小时30分钟。使用和对象可以很容易地做到这一点。 以下代码将当前时间增加1 1/2小时,并输出小时24和分钟

$date = new DateTime();
$date->add(new \DateInterval("PT1H30M")); // add 1,5 hour
$date->format("H:i");

如果需要其他格式,请查看

,也可以使用普通的日期功能

$startTime = strtotime(date("Y-m-d H:i:s"))+90*60; // add 90 minutes times 60 seconds to UNIX time.
$NewMinute = round(date("i", $startTime)/5)*5; // find new minute by rounding on "5"

echo date("Y-m-d H:", $startTime) .str_pad($NewMinute, 2, "0", STR_PAD_LEFT);

在Andreas的帮助下解决了这个问题: //将时间从现在起一小时四舍五入到最近的5分钟 日期默认时区设置为“欧洲/斯德哥尔摩”//设定时区 $startTime=strotimedate y-m-d H:i:s+30*60; $NewMinute=rounddatei$startTime/5*5; $num_padded=sprintf%02d$NewMinute//当新的一分钟少于 2位数加前导零
$time\u to\u set=dateH:,$startTime.$num\u填充

这些答案都不是你想要的吗?嗨,谢谢你的回答!我喜欢你的建议,但当$NewMinute只是一个数字时,我遇到了问题,例如从现在起90分钟是10:05$NewMinute应该是5,而不是应该是05。@Kristian在输出中添加了str_pad所以我的代码有什么问题使你不想接受它?它满足了你的要求,你唯一改变的就是Stru_pad vs sprintf。对不起,我不习惯使用stackowerflow:谢谢你的帮助!
$date = new DateTime();
$date->add(new \DateInterval("PT1H30M")); // add 1,5 hour
$date->format("H:i");
$startTime = strtotime(date("Y-m-d H:i:s"))+90*60; // add 90 minutes times 60 seconds to UNIX time.
$NewMinute = round(date("i", $startTime)/5)*5; // find new minute by rounding on "5"

echo date("Y-m-d H:", $startTime) .str_pad($NewMinute, 2, "0", STR_PAD_LEFT);