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

Primeng Calendar无法从数据库设置日期及Moment格式化报错求助

解决PrimeNG Calendar无法从数据库设置日期的问题

嘿,我之前也碰到过类似的问题,咱们一步步来搞定它!

问题根源

你遇到的Uncaught (in promise): Unexpected literal at position 2错误,核心原因是Moment解析日期时用错了格式参数。服务器返回的2018-04-17T16:41:47.683是标准ISO 8601格式,如果你硬给Moment传"YYYY.MM.DD HH.MM"这种格式去解析,肯定会不匹配报错——原始日期里是-和T分隔,不是.啊!

另外,PrimeNG Calendar默认期望绑定的是Date对象,要是直接传字符串或者格式不对的Moment对象,也会出问题。

具体解决方案

1. 正确解析服务器返回的日期

Moment可以直接识别ISO格式的日期,完全不用手动指定格式,省得写错:

// 假设从后端拿到的日期字符串是serverDate
const serverDate = '2018-04-17T16:41:47.683';
const momentDate = moment(serverDate); // 直接解析,完美适配ISO格式

如果非要手动指定格式(其实没必要,多此一举),得用和原始字符串完全匹配的格式:

const momentDate = moment(serverDate, 'YYYY-MM-DDTHH:mm:ss.SSS');

2. 绑定到PrimeNG Calendar

有两种方式让Calendar正常显示这个日期:

方式一:转成Date对象(最省心)

把Moment对象转成原生Date,直接绑定到ngModel就行:

// 在组件类里
this.startDate = momentDate.toDate();

模板里这样写:

<p-calendar id="StartDate" 
            inputStyleClass="form-control" 
            [showIcon]="true" 
            showTime="true" 
            hourFormat="24"
            [(ngModel)]="startDate"></p-calendar>

方式二:让Calendar支持Moment对象

如果你想直接用Moment对象绑定,可以在模块里配置Calendar的全局设置:

import { CalendarModule } from 'primeng/calendar';
import * as moment from 'moment';

@NgModule({
  imports: [
    CalendarModule.forRoot({
      useMoment: true,
      moment: moment
    })
  ]
})
export class YourModule { }

之后就可以直接把Moment对象绑定到ngModel了,不用转Date。

3. 设置显示格式为YYYY.MM.DD HH.MM

要让Calendar显示成你想要的格式,直接用它的dateFormat属性,注意PrimeNG的格式规则和Moment有点不一样:

<p-calendar id="StartDate" 
            inputStyleClass="form-control" 
            [showIcon]="true" 
            showTime="true" 
            hourFormat="24"
            dateFormat="yy.mm.dd HH.mm" <!-- 这里yy对应4位年,mm是月/分,dd是日 -->
            [(ngModel)]="startDate"></p-calendar>

解释下格式符:yy是4位年份,mm是月份(或分钟,在时间部分),dd是日期,HH是24小时制的小时。

最后再检查下

确保你之前没有犯这两个错误:

  • 用错误的格式字符串去解析ISO日期
  • 直接把原始的ISO字符串绑定到Calendar(它不认,要转成Date或Moment对象)

这样应该就能正常显示数据库返回的日期了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:40:51