You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将'8:00-9:00 AM'转为ISO时间格式适配Angular FullCalendar?

解决方案

步骤1:拆分提取时间组件

先从输入字符串里拆分出开始时间、时段标识(AM/PM):

const timeStr = '8:00-9:00 AM';
// 拆分时段和时间范围
const [timeRange, period] = timeStr.split(' ');
// 获取开始时间部分
const startTimeStr = timeRange.split('-')[0];
// 拆分小时、分钟并转为数字
const [hours, minutes] = startTimeStr.split(':').map(Number);

步骤2:转换为24小时制

根据AM/PM调整小时数,适配FullCalendar的时间格式要求:

let adjustedHours = hours;
// PM时段且小时不为12时,加12转为24小时制
if (period === 'PM' && hours !== 12) {
  adjustedHours += 12;
}
// AM时段且小时为12时,转为0点
if (period === 'AM' && hours === 12) {
  adjustedHours = 0;
}

步骤3:与目标日期拼接

把调整后的时间和目标日期(比如YYYY-MM-DD格式的字符串)拼接成FullCalendar支持的Date对象或ISO字符串:

// 替换为你的目标日期
const targetDateStr = '2024-05-20';
// 拼接成标准日期时间字符串
const fullDateTimeStr = `${targetDateStr}T${adjustedHours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:00`;
// 转为Date对象,可直接传给FullCalendar的事件start字段
const eventStartDate = new Date(fullDateTimeStr);

// 也可以生成ISO格式字符串,FullCalendar同样支持
const eventStartISO = eventStartDate.toISOString();

封装成可复用方法

把逻辑封装成组件内的函数,方便调用:

formatStartTimeToFullCalendar(timeStr: string, targetDateStr: string): Date {
  const [timeRange, period] = timeStr.split(' ');
  const startTimeStr = timeRange.split('-')[0];
  const [hours, minutes] = startTimeStr.split(':').map(Number);
  
  let adjustedHours = hours;
  if (period === 'PM' && hours !== 12) {
    adjustedHours += 12;
  }
  if (period === 'AM' && hours === 12) {
    adjustedHours = 0;
  }
  
  const fullDateTimeStr = `${targetDateStr}T${adjustedHours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:00`;
  return new Date(fullDateTimeStr);
}

// 调用示例
const eventStart = this.formatStartTimeToFullCalendar('8:00-9:00 AM', '2024-05-20');

可选:用工具库简化逻辑

如果项目中引入了date-fns这类日期工具库,可以进一步简化转换:

import { parse } from 'date-fns';

const targetDate = new Date('2024-05-20');
// 直接解析并拼接日期
const eventStartDate = parse(startTimeStr + ' ' + period, 'h:mm a', targetDate);

内容的提问来源于stack exchange,提问作者Victor Alejandro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 23:10:27