如何将日期字符串分解或解析为单独的yy-mm-dd,hh和mm am或pm

时间:2018-12-28 18:34:52

标签: javascript

我试图提取我们的小时,分​​钟数,yy-mm-dd,如果从我们使用的API传递的日期字符串中获取上午或下午,则为“ p”。尝试设置本地JS变量。

我有一个通过API(2018-12-31T09:00:00-0600)传递的字符串响应

我需要向另一个API提交请求,但需要将小时,分钟,日期和上午/下午作为单独的变量传递。

本地JS变量:

  var TK_send_date; //yy-mm-dd
  var TK_send_hour; //01-23
  var TK_send_minute; // 00, 30
  var TK_ampm; // AM or PM

API想要这个。

someAPIFunction(hour, minutes, date, ampm);

==更新=========

这里是我所拥有的,只有一部分正在工作。

function bookingSuccess(response) {
    console.log("bookingSuccess function called");
    TK_Response = response;
    local_date = new Date(response.data.start); //2018-12-31T09:00:00-0600
    TK_send_hour = local_date.getHours(); // is always 0
    TK_send_hour = local_date.getMinutes(); // is always 0
    TK_send_date = local_date.toISOString().split('T')[0]; // successfully gets the date yy-mm-dd
    if(TK_send_hour < 12) {
      TK_ampm = 'AM';
    } else {
      TK_ampm = 'PM';
    }
  }

3 个答案:

答案 0 :(得分:0)

这是我能为您做的最好的事情。只是很多格式化和方法调用。

block.style.left = (parseFloat(block.style.left) + 0.5075470472) + 'px';
block.style.top = (parseFloat(block.style.top) - 2.956754301) + 'px';

答案 1 :(得分:0)

您的描述中缺少一些细节,例如有关时区的处理方法。如果知道时区,那么您的解决方案就可以了,除了您需要在当地人上使用var,并且您要在第6行的分钟起设置小时。由于您的第二个API需要AM / PM,所以我猜也是需要12小时,所以您需要调整小时。

如果您想要的解决方案不是时区幼稚的,则可以使用regular expression从数据中提取所需的字段,并将其返回到字典中。

/* Parse date expected in format 2018-12-31T09:00:00-0600
   @param string The date to be parsed.
   @return Dictionary with values in keys, or null on bad data. */
function parse_date (string) {
    var pattern = /(\d\d\d\d-\d\d-\d\d)T(\d\d):(\d\d):(\d\d)-(\d\d\d\d)/;
    var matches = pattern.exec (string);
    if (matches == null) return null;
    var hr24 = parseInt (matches [2]);
    return {
        'date': matches [1],
        'hour': hr24 == 0 ? 12 : hr24 > 12 ? hr24 - 12 : hr24,
        'ampm': hr24 < 12 ? "am" : "pm",
        'minute': parseInt (matches [3])
    }
}

console.log (parse_date ("2018-12-31T09:27:00-0600"))
console.log (parse_date ("2018-12-31T14:29:00-0500"))
console.log (parse_date ("2018-12-31T00:29:00-0500"))
console.log (parse_date ("2018-12-31T12:29:00-0500"))
console.log (parse_date ("2018-12-31T13:29:00-0500"))
console.log (parse_date ("2018-12-31Tbjdfjdkfj0600"))

这将输出:

{ date: '2018-12-31', hour: 9, ampm: 'am', minute: 27 }
{ date: '2018-12-31', hour: 2, ampm: 'pm', minute: 29 }
{ date: '2018-12-31', hour: 12, ampm: 'am', minute: 29 }
{ date: '2018-12-31', hour: 12, ampm: 'pm', minute: 29 }
{ date: '2018-12-31', hour: 1, ampm: 'pm', minute: 29 }
null

答案 2 :(得分:0)

下面,我创建了一个非常简单的time实用程序对象。应该可以满足您的需求,这很简单。要在代码中使用此代码,您可以将Date.now()的{​​{1}}参数替换为TimeUtil

response.data.start