【问题标题】:How to check whether the time is round figured to :00 or :30 or not in js?如何在js中检查时间是否四舍五入到:00或:30?
【发布时间】:2020-01-13 09:28:05
【问题描述】:

接受的时间应该是,基本上应该是 00 或 30。

9:00 AM

不像:

12:34 AM

我可以想到常规的 exp。还有其他方法吗?我可以使用moment.js。 有什么建议吗?

【问题讨论】:

标签: javascript time format momentjs


【解决方案1】:

您可以使用以下正则表达式来测试您的字符串:

/^([0-1]?[0-9]|2[0-3]):[0|3][0]\s[A|P]M$/

Sample

const r = /^([0-1]?[0-9]|2[0-3]):[0|3][0]\s[A|P]M$/;

['9:00 AM',
  '12:30 PM',
  '3:30 PM',
  '5:00 PM',
  '12:30 PM',
  '12:34 AM',
  '3:21 PM',
  '4:56 AM'
].forEach(a => console.log(a, r.test(a)));

【讨论】:

  • 如何编辑正则表达式以进行单行比较,例如上午 12:30?
  • 单行/^([0-1]?[0-9]|2[0-3]):[0|3][0]\s[A|P]M$/.test('12:30 AM')应该给你真实的
【解决方案2】:

使用moment,可以这样使用:

const momentTime = moment(yourTime)
const minute = momentTime.minute()

if (minute === 0 || minute === 30) { // do your things }

但我认为@shrys 使用正则表达式可能会更好。

【讨论】:

    【解决方案3】:

    对于这样的每个输入,您可以使用moment.js 对其进行解析并查询分钟:

    let times = [
        '9:00 AM',
        '12:30 PM',
        '3:30 PM',
        '5:00 PM',
        '12:30 PM',
        '12:34 AM',
        '3:21 PM',
        '4:56 AM',
    ];
    
    times.map(time => {
        let parsedTime = moment(time, 'hh:mm');
        let minutes = parsedTime.minutes();
    
        if (minutes === 0 || minutes === 30) {
            // do stuff
        }
    });
    

    【讨论】:

      猜你喜欢
      • 2021-12-11
      • 2023-01-12
      • 2015-12-19
      • 2017-12-26
      • 2017-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多