使用jQuery将AM / PM日期字符串转换为javascript日期

时间:2018-09-19 20:54:22

标签: javascript jquery date-format

我有一个日期字符串,例如20/09/2018 12:00 AM。我需要停下比今天更早的日期。我已经为此蒙了一眼。但是找不到这种格式的答案。我需要javascript的默认日期格式,以便可以与新的Date()值进行比较。有人可以帮忙吗?当我使用以下格式时,由于我的invalid date格式,它会显示消息dd/MM/yyyy hh:mm tt。请帮忙。

alert(new Date("20/09/2018 12:00 AM"));

2 个答案:

答案 0 :(得分:1)

Igor建议使用 moment.js 解决此问题-这是一个广泛使用的日期/时间库。

使用moment.js,您可以执行以下操作:

import os
import yaml
import binascii
import datetime
from pysimplesoap.server import SoapDispatcher, SOAPHandler, WSGISOAPHandler
from pysimplesoap.simplexml import SimpleXMLElement
from http.server import HTTPServer

第一行通过根据指定为第二个参数的格式字符串解析日期来创建“矩”对象。参见http://momentjs.com/docs/#/parsing/

第二行获取当下对象封装的本地javascript var m = moment("20/09/2018 3:14 PM", "DD/MM/YYYY h:mm a"); var d = m.toDate(); 对象;但是,此刻可以做很多事情,您可能不需要取回该原始对象。

请参见moment docs

答案 1 :(得分:0)

您的格式无效,因此出现invalid date错误。因此,使用您的格式(dd / MM / yyyy hh:mm tt),我们将获取年,月,日,小时和分钟,然后由Date构造函数将其重新格式化为可接受的格式并创建一个Date实例。

这是一个执行所有操作并返回Date实例的函数,您可以将其与另一个Date实例进行比较:

function convertToDate(str) {
  // replace '/' with '-'
  str = str.replace(/\//ig, '-');
  
  /**
  * extracting the year, month, day, hours and minutes.
  * the month, day and hours can be 1 or 2 digits(the leading zero is optional).
  * i.e: '4/3/2022 2:18 AM' is the same as '04/03/2022 02:18 AM' => Notice the absence of the leading zero.
  **/
  var y = /\-([\d]{4})/.exec(str)[1],
      m = /\-([\d]{2}|[\d])/.exec(str)[1],
      d = /([\d]{2}|[\d])\-/.exec(str)[1],
      H = /\s([\d]{2}|[\d]):/.exec(str)[1],
      i = /:([\d]{2})/.exec(str)[1],
      AMorPM = /(AM|PM)/.exec(str)[1];
  
  // return a Date instance.
  return new Date(y + '-' + m + '-' + d + ' ' + H + ':' + i + ' ' + AMorPM)
}

// testing...
var str1 = '20/09/2018 12:00 AM';
var str2 = '8/2/2018 9:00 PM'; // leading zero is omitted.
console.log(convertToDate(str1));
console.log(convertToDate(str2));

  

Date取决于用户/服务器的位置,两个用户可能拥有   结果不同。

     

Learn more   大约Date

希望我进一步推动了你。

相关问题