Angular中Date类型赋值报错:如何格式化日期为yyyy-MM-dd hh:mm
解决方案
核心问题原因
formatDate方法返回的是字符串类型,但你的obj.created_date被定义为Date类型,TypeScript的类型校验规则不允许将字符串赋值给Date类型变量,这就是报错type 'string' is not assignable to type 'date'的原因。而直接在formatDate前加new Date(),会把格式化后的字符串重新解析为Date对象,自然无法得到你想要的字符串格式。
推荐方案:新增字符串属性存储格式化结果
最规范的做法是保留created_date的Date类型(用于日期计算、后续逻辑处理),新增一个字符串类型的属性来存储格式化后的展示值:
// 给obj补充类型定义,新增格式化日期属性 interface YourObject { created_date: Date; formattedCreatedDate?: string; // 其他属性... } // 将格式化后的字符串赋值到新属性 obj.formattedCreatedDate = formatDate(obj.created_date, 'yyyy-MM-dd hh:mm', 'en-US');
备选方案:修改原属性类型(不推荐)
如果一定要复用created_date属性存储格式化后的字符串,需要修改它的类型为Date | string,但这种方式会混淆日期对象和字符串的用途,后续处理容易引发类型相关问题:
// 修改类型定义 interface YourObject { created_date: Date | string; // 其他属性... } // 直接赋值格式化后的字符串(需类型断言确保编译通过) obj.created_date = formatDate(obj.created_date as Date, 'yyyy-MM-dd hh:mm', 'en-US');
内容的提问来源于stack exchange,提问作者Niladri Banerjee - Uttarpara
相关产品推荐
相关产品推荐

