如何从自定义时间对象生成 momentjs 格式

How to generate momentjs format from custom time object

上下文:

嗨,我正在尝试根据给定的开始时间和结束时间生成 moment.js format

let sourceTime = {
  "startTime": "0600", // 6 AM
  "endTime": "2100" // 9 PM
}

使用上面的 endTime 属性 我正在尝试按照以下格式获取时间:

2021-02-04T09:00 pm i.e This format https://momentjs.com/docs/#/displaying/format/ - "YYYY-MM-DDThh:mm a"

使用这段代码

let currentDate = moment().format('DD-MM-YYYY');
let savedFormat = moment(`${currentDate} ${sourceTime.endTime.substring(0, 2)}:${sourceTime.endTime.substring(2, 4)}`).format('YYYY-MM-DDThh:mm')

我在其中使用字符串文字以自定义方式添加当前日期和结束时间以生成所需格式。

问题:

我收到的是 9:00 上午而不是 9:00 下午。

2021-02-04T09:00 am

不确定我哪里做错了。任何建议都会有所帮助。

let sourceTime = {
  "startTime": "0600", // 6 AM
  "endTime": "2100" // 9 PM
}

let currentDate = moment().format('DD-MM-YYYY');
let savedFormat = moment(`${currentDate} ${sourceTime.endTime.substring(0, 2)}:${sourceTime.endTime.substring(2, 4)}`).format('YYYY-MM-DDThh:mm')

console.log(savedFormat);

//Shows am instead of pm
console.log(moment(savedFormat).format('YYYY-MM-DDThh:mm a'));
//OUTPUT
<script src="https://momentjs.com/downloads/moment.min.js"></script>

试试下面的例子看看是否有效

console.log(
    moment('Mon 03-Jul-2017, 11:00 AM', 'ddd DD-MMM-YYYY, hh:mm A')
    .format('hh:mm A')
);
console.log(
    moment('Mon 03-Jul-2017, 11:00 PM', 'ddd DD-MMM-YYYY, hh:mm A')
    .format('hh:mm A')
);

经过咨询Momentjs Format,我提出以下解决方案:

let sourceTime = {
  "startTime": "0600", // 6 AM
  "endTime": "2100" // 9 PM
}
const startTime = moment(sourceTime.startTime, 'HHmm').format('YYYY-MM-DD h:mm a');
const endTime = moment(sourceTime.endTime, 'HHmm').format('YYYY-MM-DD h:mm a');

console.log(startTime + ' to ' + endTime);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>