我有一个工作的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>
所以我想在php中做同样的事情。
尝试使用simular代码:
$startTime = date("Y-m-d H:i:s");
$cenvertedTime = date('Y-m-d H:i:s',strtotime('+1,5
hour',strtotime($startTime)));
$current_time = strtotime($cenvertedTime);
$frac = 900;
$r = $current_time % $frac;
$new_time = $current_time + ($frac-$r);
$new_date = date('Y-m-d g:i:s A', $new_time);
但事实并非如此,我在上面的两个剧本中都得到了相同的时间。 我怎样才能将javascript尽可能地转换为php?
/克里斯蒂安
答案 0 :(得分:1)
可以使用&#34; normal&#34; date()函数也。
$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);
答案 1 :(得分:0)
因此,如果你想在php脚本中点击按钮的同一时间点按钮,那么你可以使用ajax将时间值发送到php文件
使用JQuery插件包括以下行
<script src="http://code.jquery.com/jquery-latest.js"></script>
然后使用下面的代码在按钮点击
上使用ajax发送时间值到php文件var btn_date = $('#btn_id').text();
$.ajax({
url: "phpfile.php",
type: "post",
data: "date_val="+btn_date,
success: function(data) {
$('.status_text').html(data);
}
});
答案 2 :(得分:0)
如果我正确阅读了代码,您希望将当前时间加1小时30分钟。您可以使用DateTime
和DateInterval
对象轻松完成此操作。
以下代码将当前时间增加1 1/2小时并输出小时(24)和分钟。
$date = new DateTime();
$date->add(new \DateInterval("PT1H30M")); // add 1,5 hour
$date->format("H:i");
如果您想要其他格式,请查看date formats
答案 3 :(得分:0)
在Andreas的帮助下解决了它:)
//get the time one hour from now rounded off to nearest 5 minute
date_default_timezone_set('Europe/Stockholm'); //Set timezone
$startTime = strtotime(date("Y-m-d H:i:s"))+30*60;
$NewMinute = round(date("i", $startTime)/5)*5;
$num_padded = sprintf("%02d", $NewMinute); //When the NewMinute is less than
2 digits add leading zero
$time_to_set = date("H:", $startTime) .$num_padded;