javascript中如何比较字符串形式的时间格式的时间差

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript中如何比较字符串形式的时间格式的时间差相关的知识,希望对你有一定的参考价值。

我的源代码如下:
var date1="2001-01-01 10:10:00";
var date2="2002-02-02 12:12:00";

我想求两个字符串形式的时间之间相差多少分钟

参考技术A getTime 方法

getTime 方法返回一个整数值,该整数表示了介于 1970 年 1 月 1 日午夜和 Date 对象中的时间值之间的毫秒数。日期的范围大约是 1970 年 1 月 1 日午夜前后的 285,616 年。负数指示 1970 年之前的日期。

function xxxx()
var msspan=date1.getTime()-date2.getTime()
return msspan/(60*1000)


最好是时间格式,不要字符串,避免出错!!!
参考技术B DateDiff ("m","2001-01-01 10:10:00 ","2002-02-02 12:12:00") 参考技术C (Date.parse(date2) - Date.parse(date1)) / 60000 参考技术D <html>
<script>
function GetTimeTest()
var d1, d2,s;
var DyMilli = 60 * 24;
d1 = new Date(2001,01,01,10,10,00);
d2 = new Date(2002,02,02,12,12,00);
s = Math.round(d2 / DyMilli)-Math.round(d1 / DyMilli) ;
return(s);

</script>
<body onload="alert(GetTimeTest())">
<body>
</html>本回答被提问者采纳
第5个回答  2007-01-27 直接调用vbscript里的datediff函数:
<script language=javascript>
var date1="2001-01-01 10:10:00";
var date2="2002-02-02 12:12:00";
execScript('n = DateDiff("n",date1,date2)','vbscript');
document.write(date2+"和"+date1+"相差 "+n+" 分钟。");
</script>

如何正确格式化 PDO 结果? - 以字符串形式返回的数字结果?

【中文标题】如何正确格式化 PDO 结果? - 以字符串形式返回的数字结果?【英文标题】:How to properly format PDO results? - numeric results returned as string? 【发布时间】:2012-06-23 03:16:45 【问题描述】:

AJAX 相对较新,现在刚开始学习 PDO,增加的 ReSTler 水平让我完全不知所措。从 Restler 示例中对以下代码进行建模,我不知道如何将输出格式从 PDO is 返回到 Restler 和 Highcharts 所期望的格式。

如何更改此代码以从当前格式转换为所需格式? (如果这是处理 MySQL 结果的一个因素,结果通常是 5K-10K 记录。)

ReSTler API 代码片段

$sql = "SELECT ....."
$this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
try 
    $stmt = $this->db->query($sql);
    return $stmt->fetchAll();
 catch (PDOException $e) 
    throw new RestException(502, 'Listing History: ' . $e->getMessage());

当前输出格式(包括不需要的列名):

[
  
    "chart_date": "1118966400000",
    "bandwidth": "10.01",
    "views": "101"
  ,
  
    "chart_date": "1119225600000",
    "bandwidth": "20.02",
    "views": "101"
  ,

所需的输出格式(数字和没有列名):

[
  [
    1118966400000,
    10.01,
    101
  ],
  [
    1119225600000,
    20.02,
    202
  ],

编辑使用建议 fetch(PDO::FETCH_NUM):

根据@Ricardo Lohmann 的回答,我尝试了 fetch(PDO::FETCH_NUM),它确实删除了列名,但返回的所有列似乎都是字符串,而不是数字,因为数据实际上是,所以试试这个,给我正确的数据类型 - PDO 的这一部分是否单方面返回字符串?

while ($row = $stmt->fetch(PDO::FETCH_NUM)) 
    $array[$x][0] = intval( $row[0] );
    $array[$x][1] = intval( $row[1] );
    $array[$x][2] = intval( $row[2] );
    $x++;

return $array;

【问题讨论】:

【参考方案1】:

PDO::FETCH_NUM 是要走的路,虽然这并不意味着数字列将保持数字,这只意味着您将获得一个索引数组而不是关联数组(因此,它只完成了列名的省略) .

MySQL PDO 驱动程序总是返回数字列的字符串,即 a known bug,但不幸的是,这是 PHP 开发人员公然无视的众多错误之一,即“谢谢,但这不是错误”。

您可以强制json_encode 对看起来像数字的值使用实际数字:json_encode($data, JSON_NUMERIC_CHECK)(自 PHP 5.3.3 起)。

【讨论】:

啊,我可以使用 PHP 5.3,唉,我一直坚持使用 5.2,但谢谢你至少澄清了“字符串的东西”......当我受伤时尝试每一个 ^&^*(( 可能的设置!!!【参考方案2】:

尝试设置 fetch 模式而不是 fetchall,如下所示:

return $stmt->fetch(PDO::FETCH_COLUMN);

你可以看到reference。

【讨论】:

【参考方案3】:

我发现绕过这个问题的唯一方法(使用 SQLSRV 驱动程序)是让 SQL 在 OUTPUT 参数中将所有数据类型作为字符串发送。然后使用正确的数据类型转换所有值。这对于大数据集来说可能很重。

尽管 PDO 开发人员说这是驱动程序问题(不是他们的错误),但我在使用没有 PDO 的 SQLSRV 驱动程序时从未遇到过这个问题...

【讨论】:

【参考方案4】:

您可以按如下方式设置下一个属性:

$pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

属性ATTR_STRINGIFY_FETCHES让你在获取时将数值转换为字符串。

【讨论】:

【参考方案5】:

我曾希望有一种内置方法可以做到这一点,因此我执行了 Google 搜索:v。

我正在构建自己的自定义 CMS 应用程序,我认为它“类似于 Drupal”(我从未使用过 Drupal,但我使用的是基于 Drupal 的自定义系统)。我的意思是我的数据库中有一个表,它基本上描述了其他表中的所有字段,当我从这些其他表中检索字段时,我加载了描述和数据类型我的数据。

例如

tablex 字段:姓名、年龄、够老

表格说明

fieldname  |  datatype  |  minlength  |  parent
___________|____________|_____________|________
Name       |  String    |  5          |  tablex
Age        |  Int       |  1          |  tablex
Old Enough |  Boolean   |  1          |  tablex

因此,当我从 tablex 加载数据时,我会在 tabledescription 中查找 parent = 'tablex' 的内容并使用 switch 语句对数据进行数据类型化

foreach ( ... ) 
    switch ($desc->datatype) 
       case 'int': (int) $tablex->data;
            break;
    

etc.

【讨论】:

@YourCommonSense 在构建系统 OOP 风格时不是这样。顺便说一句,这只是我使用'tabledescriptions'表的一个sn-p。我还用它来确定 tablex 等的插入字段是什么,这意味着从长远来看,代码更高效、更可靠 为什么不直接向 dbms 询问数据类型?

以上是关于javascript中如何比较字符串形式的时间格式的时间差的主要内容,如果未能解决你的问题,请参考以下文章

如何执行字符串形式的js代码

java中如何比较两个时间字符串的大小

C++函数如何传递字符串

SQL Server中如何将特定形式字符串转换为时间格式。并将该时间进行加减

Javascript如何将十进制数转换为具有特定小数位数的字符串

如何正确格式化 PDO 结果? - 以字符串形式返回的数字结果?