0

目标

获取两个小时之间的分钟差,例如:12:20:0012:15:00. 结果是:5

问题

我在 PHP 中有一个字符串有时会“容纳”,就像上面的例子一样。而在 JavaScript 中,当分钟差大于 3 时,我需要启用一个按钮。换句话说,这就是我在 PHP 中所拥有的:10:00:00这就是Date()对象在 JavaScript 中带给我的:Thu Oct 10 2013 11:29:49 GMT-0300 (Hora oficial do Brasil)

我需要获取11:29:49并比较10:00:00以获取分钟的差异。如果这个差值大于 3,那么做一些事情

代码聚焦

这就是我正在尝试的,但当然不起作用。由于变量的类型不同,因此无法计算差异。

<script>
var date = new Date();
    nowInHours = date.getHours() + ":" 
                 + date.getMinutes() + ":" 
                 + date.getSeconds(),
    fantasyHours = <?php $application->time(); ?>;

console.log(fantasyHours - nowInHours);
</script>

有人可以给我一个想法吗?

4

5 回答 5

1

首先,像老板一样管理你的时间。编程语言中的时间计算为自设定日期以来的秒数或毫秒数(我们称之为 Unix 时间戳 - 1970 年1 月 1 日 00:00:00 UTC)。

如您所知,使用这种标准格式的日期是最好的,因为您只需有两个可以比较的整数。

在 JavaScript 和 PHP 中,这些日期格式是默认的并且非常易于使用。

JS: new Date().getTime()
PHP:time()和日期构造函数(不过这里我也帮不上什么忙,你应用的业务逻辑只有你自己知道)

因此,将您的时间从 PHP 转换为方便的标准格式(UTC 格式)。然后使用它在语言之间共享日期并将它们一起比较。

于 2013-10-10T14:42:40.270 回答
0

var fantasyHours = new Date(<?php echo $application->time(); ?> * 1000)

That should give you the time from PHP to JavaScript. You can now check both date objects to see the diffrence.

The *1000 is needed because the PHP unix time is in seconds and new Date() needs miliseconds.

于 2013-10-10T14:49:26.610 回答
0

你能不使用 JodaTime,把你们两个日期都转换为 LocalDateTime 然后比较吗?这似乎有效:

public static void main(String[] args) {

    LocalDateTime date1 = new LocalDateTime(2013,10,10,12,15,0);
    LocalDateTime date2 = new LocalDateTime(2013,10,10,12,20,0);

    assertEquals( 5, Minutes.minutesBetween(date1, date2).getMinutes() );
}
于 2013-10-10T14:46:48.337 回答
0

将两个日期转换为毫秒,并进行比较。如果它们在 18000 以内,则它们在 3 分钟以内。js 中的 Date.getTime() 将为您执行此操作。

于 2013-10-10T14:38:41.137 回答
0

在使用 Regex 或 String.split 函数进行处理之前,您可以尝试将 PHP 日期转换为 Javascript 日期。

请参阅Javascript 日期

于 2013-10-10T14:43:56.980 回答