Angular中如何去除日期格式里的00:00:00.000000部分?
解决方案
针对你的需求,结合Angular代码场景,有两种直接可行的处理方式:
1. 格式化日期时直接只保留日期部分
你的formatDate函数使用了Angular内置的formatDate工具,只需调整dateFormat变量的格式规则,让它仅包含日期部分即可:
假设你之前的dateFormat包含时间规则,将其修改为仅日期的格式:
// 定义只保留日期的格式 dateFormat = 'yyyy-MM-dd'; language = 'en-US'; // 根据你的实际语言环境调整 formatDate(date: Date){ return formatDate(date, this.dateFormat, this.language); }
修改后调用formatDate返回的就是2022-08-07这类纯日期字符串,不会携带任何时间后缀。
2. 处理已有的带时间的日期字符串
如果是从后端或其他数据源获取到2022-08-07 00:00:00.000000格式的字符串,需要剥离时间部分,可采用以下两种简单方法:
方法一:字符串分割
通过空格分割字符串,取第一部分即可得到纯日期:
const dateWithTime = '2022-08-07 00:00:00.000000'; const pureDate = dateWithTime.split(' ')[0]; // 结果:'2022-08-07'
之后将处理后的日期赋值给表单控件:
this.Form.get('deliveryDate')?.setValue(pureDate);
方法二:正则表达式匹配
用正则提取字符串开头的日期部分:
const dateWithTime = '2022-08-07 00:00:00.000000'; const pureDate = dateWithTime.match(/^\d{4}-\d{2}-\d{2}/)?.[0] || ''; // 结果:'2022-08-07'
结合表单代码的优化
如果是初始化表单时要避免时间部分,只要确保formatDate返回纯日期格式,原表单初始化代码可保持不变:
this.Form = this.fb.group({ deliveryDate: [this.formatDate(new Date()), Validators.required], });
另外,你模板中使用的type="date"的matInput本身只接受yyyy-MM-dd格式的字符串,只要传入的值符合这个格式,就能正常显示纯日期,不会出现时间部分。
内容的提问来源于stack exchange,提问作者Yan
相关产品推荐
相关产品推荐

