MongoDB查询数据时修改默认时间戳返回格式的实现方法
MongoDB ISO时间戳转dd/mm/YYYY格式无循环实现方案
方案1:查询阶段直接转换(推荐)
直接在MongoDB聚合查询中使用原生$dateToString操作符完成格式转换,无需后续业务代码处理,全程无循环:
db.你的集合名.aggregate([ // 可在此处添加$match等其他查询条件阶段 { $addFields: { 格式化后日期字段名: { $dateToString: { format: "%d/%m/%Y", date: "$你存储时间的字段名", // 替换为实际存储ISO时间的字段 timezone: "UTC" // 如需转北京时间可修改为 "Asia/Shanghai" } } } } ])
操作符内的%d对应两位天数、%m对应两位月份、%Y对应四位年份,完全匹配dd/mm/YYYY的格式要求。
方案2:查询后在JS侧转换
如果已经拿到返回的ISO时间字符串,可直接使用JS内置Date API处理,无需循环:
const isoTime = '2021-10-07T11:16:44.988Z' const date = new Date(isoTime) // 使用内置padStart方法补零,无循环 const day = String(date.getUTCDate()).padStart(2, '0') const month = String(date.getUTCMonth() + 1).padStart(2, '0') // 月份从0计数,需+1 const year = date.getUTCFullYear() const formattedDate = `${day}/${month}/${year}` // 输出结果为 07/10/2021
如果需要按本地时区计算,把方法名中的UTC去掉即可(如getDate替换getUTCDate)。
如果使用Python、Java等其他语言查询,直接调用对应语言内置的日期格式化方法即可,均无需手动实现循环逻辑。
内容的提问来源于stack exchange,提问作者Ayanesh Sarkar
相关产品推荐
相关产品推荐

