【问题标题】:Check if current time is passed AM/PM in Javascript检查当前时间是否在 Javascript 中通过 AM/PM
【发布时间】:2018-10-01 17:15:31
【问题描述】:

这是给定的时间:

11:20 AM
or 01:00 PM

我需要检查当前时间是否已过,使用 Javascript(无库)

这是我在 java 中的做法:

    SimpleDateFormat sdf = new SimpleDateFormat("hh:mm a", Locale.ENGLISH);
    String currentTime = sdf.format(new Date());
    currentTime = timeConverter(currentTime,24);

    Date date = new Date() ;
    SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm", 
    Locale.ENGLISH) ;
    dateFormat.format(date);

    if(dateFormat.parse(currentTime).after(dateFormat.parse(startTime24)))
                isClassComplete.setImageDrawable(progressIcon);

帮我用 Javascript 来做。

【问题讨论】:

  • 我认为 Javascript 中没有与 SimpleDateFormat 等效的功能,但是有像 momentjs.com 这样的库实现了这个功能,您可以在其中寻找解决方案。也可以使用正则表达式,然后与 new Date().getMinutes() /.getHours() 进行比较。
  • 所以您的问题实际上是如何以 hh:mm am/pm 格式比较时间。这不需要 Date 对象,只需简单地解析字符串。你在 javascript/ECMAScript 中尝试过什么?

标签: javascript date time


【解决方案1】:

var a = new Date('1/10/2018 19:30')
var b = new Date('1/10/2018 20:00')
var difference = Math.floor((b - a) / 1000 / 60);
console.log(difference + ' minutes difference.');

差异是以秒为单位的时间。

【讨论】:

  • 强烈建议不要对非标准字符串(即不是 ECMA-262 支持的格式之一)使用内置解析器。
【解决方案2】:

如果您只有一个没有日期的时间字符串,您可以将时间转换为公分母,比如分钟,然后进行比较。例如

/* Convert time string to minutes
 * @param {string} time: format hh:mm am/pm
 * @returns {number} time converted to minutes
*/
function timeToMins(time) {
  var b = time.split(/[:\s]/);
  return b[0]%12*60 + +b[1] + (/pm\s*$/i.test(time)? 720 : 0);
}

// E.g.
[['10 : 23pm','10:23am'],   // Tolerant of differing whitespace 
 ['12:12 am','12:12   pm'],
 ['12:12 pm','12:12 am   ']
].forEach(times => console.log(
    `${times[0]} < ${times[1]}? ${timeToMins(times[0]) < timeToMins(times[1])}`
  )
);

虽然上述内容在某种程度上可以容忍不同的空格,但您应该在处理之前向字符串添加验证以确认格式,如果不是所需的格式,则返回一条合理的消息。您可能还想扩展它以支持可选的秒数和小数秒数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-04
    • 1970-01-01
    • 2022-01-19
    • 2013-09-15
    • 2021-05-03
    • 1970-01-01
    • 2015-12-23
    相关资源
    最近更新 更多