如何获取不含时间部分的当前日期,可支持多语言格式?
日期格式化实现方案
核心需求实现
你需要的 周缩写, 日期 月份缩写 年份 格式可以直接通过 JS 内置的 toLocaleDateString API 实现,不需要手动拆分日期字段:
const formatOptions = { weekday: 'short', day: '2-digit', month: 'short', year: 'numeric' } // 输出匹配示例:Tue, 28 Sep 2021 const targetDateStr = new Date() .toLocaleDateString('en-US', formatOptions) .replace(/(\w+) (\d+), (\w+) (\d+)/, '$1, $2 $3 $4')
如果对逗号位置没有严格要求,可省略正则替换步骤,直接用API返回结果即可
Firebase场景适配
你提到的firebase.firestore.FieldValue.serverTimestamp()是Firebase服务端生成的时间戳,本身包含完整时间信息,可根据你的业务需求选择处理时机:
- 对时间精度要求低:本地格式化完日期字符串直接写入Firebase存储
- 需要服务端校准时间:存完整的Timestamp类型到Firebase,读取后转成Date对象再按上面的方法格式化,避免客户端时间不准的问题
你提到的直接用Date()存储会保留日期格式而非字符串是正确的:如果仅需要展示用,可直接存格式化后的字符串;如果后续需要做日期排序、计算等操作,建议存完整的Timestamp/Date对象,展示时再格式化,灵活度更高。
多语言格式支持
可以直接修改toLocaleDateString的第一个参数(语言标签)实现其他语言的日期格式,常用示例:
- 中文简体:传入
zh-CN,输出示例:周二, 28 9月 2021 - 日语:传入
ja-JP,输出示例:火, 28 9月 2021 - 法语:传入
fr-FR,输出示例:mar., 28 sept. 2021
内容的提问来源于stack exchange,提问作者React Enjoyer
相关产品推荐
相关产品推荐

