如何将一个表示时间的字符串添加到只有日期的时刻对象

时间:2017-12-22 00:50:55

标签: javascript jquery momentjs

我有一个只包含日期的时刻对象,我有一个代表这个时间的字符串

  

离。 "下午6:00" ," 10:00 AM"

我如何才能将这段时间添加到当下并获得包含日期和时间的新时刻?

3 个答案:

答案 0 :(得分:1)

你可以通过使用时刻对象来做到这一点,但是从时间字符串中获取持续时间有点难看。但在此之后,使用moment.add将时间添加到日期是一件简单的事情:

const date = moment("2017-12-20", "YYYY-MM-DD");
console.log(date.format("MMM Mo, YYYY h:mm a"))

const time = moment.duration(moment("6:00 PM", "h:mm A").format("HH:mm:ss"));
console.log(time) // This is a ISO 8601 duration string

const datetime = date.add(time)
console.log(datetime.format("MMM Mo, YYYY h:mm a"))
<script src="https://momentjs.com/downloads/moment.min.js"></script>

答案 1 :(得分:0)

您可以简单地将moment对象格式化为字符串并将日期部分与字符串时间部分连接,然后将此字符串重新初始化为moment对象。

// assume this is your moment object that you had already.
let date = moment('2017-12-05');

// converting it to string
let dateStr = date.format('YYYY-MM-DD');

let timeStr = '10:00 AM'
let dateWithTimeStr = dateStr + ' ' + timeStr;

// reinitialize date to moment again.
let dateWithTime = moment(dateWithTimeStr);

答案 2 :(得分:0)

您可以从特定时间创建时刻实例,并使用getter提取时间信息。然后您可以使用setter相应地调整其他实例:

const d1 = moment('10:00AM', 'h:ma')
const d2 = moment()

console.log(d2.format('h:mm:ss a')) // "5:10:31 pm"

d2.set({
  hour: d1.hours(),
  minute: d1.minutes(),
  second: d1.seconds()
})

console.log(d2.format('h:mm:ss a')) // "10:00:00 am"