检查 Javascript 中的时差

2023-12-14

如何检查 Javascript 中两个文本框的时差?


凑合。减去 JavaScriptDate对象以获得它们的差异:

// use a constant date (e.g. 2000-01-01) and the desired time to initialize two dates

var date1 = new Date(2000, 0, 1,  9, 0); // 9:00 AM
var date2 = new Date(2000, 0, 1, 17, 0); // 5:00 PM

// the following is to handle cases where the times are on the opposite side of
// midnight e.g. when you want to get the difference between 9:00 PM and 5:00 AM

if (date2 < date1) {
    date2.setDate(date2.getDate() + 1);
}

var diff = date2 - date1;

// 28800000 milliseconds (8 hours)

然后您可以将毫秒转换为小时、分钟和秒,如下所示:

var msec = diff;
var hh = Math.floor(msec / 1000 / 60 / 60);
msec -= hh * 1000 * 60 * 60;
var mm = Math.floor(msec / 1000 / 60);
msec -= mm * 1000 * 60;
var ss = Math.floor(msec / 1000);
msec -= ss * 1000;
// diff = 28800000 => hh = 8, mm = 0, ss = 0, msec = 0

您可以将字符串形式的时间转换为 24 小时格式,如下所示:

function parseTime(s) {
    var part = s.match(/(\d+):(\d+)(?: )?(am|pm)?/i);
    var hh = parseInt(part[1], 10);
    var mm = parseInt(part[2], 10);
    var ap = part[3] ? part[3].toUpperCase() : null;
    if (ap === "AM") {
        if (hh == 12) {
            hh = 0;
        }
    }
    if (ap === "PM") {
        if (hh != 12) {
            hh += 12;
        }
    }
    return { hh: hh, mm: mm };
}
parseTime("12:00 AM"); // {hh:  0, mm: 0}
parseTime("12:00 PM"); // {hh: 12, mm: 0}
parseTime("01:00 PM"); // {hh: 13, mm: 0}
parseTime("23:00");    // {hh: 23, mm: 0}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检查 Javascript 中的时差 的相关文章

随机推荐

  • 单元测试 Zsh 完成脚本

    我正在尝试为 Zsh 编写一个完成脚本 我想对完成脚本进行单元测试 例如 我想测试完成情况my command h包括 help 对于鱼 我可以使用complete C my command h 然后会输出 help以及任何其他有效的完成情
  • 如何在两台具有公共IP但都位于LAN后面的机器之间进行通信(python解决方案)?

    正在寻找一个简单的 python 解决方案 假设机器A的本地IP是192 168 1 5 公共IP是111 11 111 11 机器B的本地IP是10 0 0 5 公共IP是222 22 222 22 现在我需要在这两台机器之间进行通信 你
  • 如何在 C 中更新 GTK+-3.0 中的标签

    我似乎无法使用该功能 gtk label set text 这就是我写的 include
  • 执行多重响应;如何从响应中读取和存储指南

    我正在使用 ExecuteMultipleResponse 方法使用 SSIS 一次插入 10 条帐户记录 List
  • 什么是算法摊销分析? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 它与渐近分析有何不同 你什么时候使用它 为什么 我读过一些似乎写得很好的文章 例如 http www ugrad cs ubc ca cs320 2010W2 handouts
  • 无法进行空手道测试

    我无法在我的功能中运行空手道测试 package api import com intuit karate junit4 Karate import org junit runner RunWith RunWith Karate class
  • Linux下如何删除包含其他子目录和文件的目录?

    我有一个包含文件和其他目录的目录 我需要在一个命令中删除所有内容 但如果我确定要删除 i 则无需询问我每个文件 有什么命令吗 您需要递归删除该文件夹 rm r folder name From rm help r R recursive r
  • 如何从Python中的列表构造矩阵?

    我是 Python 新手 我的问题是如何从一些列表构造矩阵 例如 如果我有列表 388 625 174 125 157 25 166 375 432 25 606 125 326 25 202 75 383 5 718 25 630 284
  • 如何将 pandas 方法作为参数传递?

    我有一个计算 pandas 数据框的列模式的函数 def my func df for col in df columns stat df col mode print stat 但我想让它更通用 以便我可以更改我计算的统计数据 例如mea
  • ggplot2 中的默认中断 - 图例指南和极坐标 y 轴标签的中断限制在哪里

    这本质上是一个后续问题ggplot 如何计算其默认中断 当我试图找到一个稍微更优雅的解决方案时 我遇到了这个如何在coord 极坐标图ggplot中添加y轴标签 显然 休息时间总是用以下方式计算scales extended breaks
  • C# 从 Azure 检索 blob 列表

    我需要一些存档清理代码来在一定的保留期过后删除旧的 Azure 日志 我知道我可以这样做 CloudStorageAccount storageAccount CloudStorageAccount Parse CloudBlobClien
  • 修改x轴位置

    当你使用plot在 Matlab 中调用函数时 y 轴和 x 轴分别位于左侧和底部 但我希望 x 轴在图的中间穿过 比例和数字如下所示 请原谅我的业余绘画技巧 但基本上我希望 x 轴移动到顶部 例如 我希望那里有数字和那些小凸起 如红线所示
  • 如何使用计时器替换Azure辅助角色中的Thread.Sleep(...)?

    有很多人说要使用的例子Timer代替Thread Sleep in an Azure Worker Role 没有问题 我很难理解的是如何编写这个代码 目前 我有以下 伪代码 timer Elapsed sender args gt DoW
  • 记住状态 chrome 扩展

    我使用 chrome 扩展来触发两个内容脚本来注入 css 如果用户打开页面 则 contentscript on js 加载 在我的 manifest json 中定义 清单 json name tools version 1 1 des
  • AngularJS 路由器配置不起作用

    我刚刚开始学习 Angular JS 我编写了一些路由测试代码 但似乎不起作用 演示应用程序 js var demoApp angular module demoApp demoApp config function routeProvid
  • 在 Ionic 中打开适用于 Android 的应用程序

    我目前正在使用 Ionic Framework 开发适用于 iOS 和 Android 的移动应用程序 我有自己的 Map API 但缺乏导航功能 当用户单击 POI 时 我的应用程序可以打开其他地图应用程序 例如 Google 地图或 W
  • Chart.js yAxes 刻度步长不起作用(小提琴)

    我创建了一个折线图 其中 y 轴选项如下 yAxes ticks precision 1 stepSize 18 1 min 148 5 max 220 9 因此 我希望 y 轴比例如下 220 9 202 8 184 7 166 6 14
  • 使用 Android proguard 忽略外部库

    我想使用 Proguard 主要是出于混淆的原因 我在 Android 中遇到了 proguard 的问题 我使用simpleframework来解析XML 它的外部 在 proguard cfg 中 keepattributes Anno
  • jsf登录超时

    好的 简单的问题 我有一个 JSF 应用程序 包含一个登录页面 问题是 如果用户加载登录页面 离开一段时间 然后尝试登录 会话就会过期并引发 ViewExpiredException 当发生这种情况时 我可以重定向回登录 但这不是很顺利 如
  • 检查 Javascript 中的时差

    如何检查 Javascript 中两个文本框的时差 凑合 减去 JavaScriptDate对象以获得它们的差异 use a constant date e g 2000 01 01 and the desired time to init