JS中如何格式化REST返回的lastModified日期为指定显示格式?
日期时间格式化实现方案
根据你的需求,把lastModified字段的UTC日期格式转换成"19 Mar 13:02",下面分不同场景给出具体实现:
前端JavaScript场景
如果是在前端处理(比如获取JSON后渲染单选按钮标签),有两种常用方式:
方式1:手动拼接格式化
适合需要精确控制每一部分的场景:
function formatLastModified(dateStr) { // 解析UTC日期字符串 const utcDate = new Date(dateStr); // 定义英文月份缩写数组(对应0-11月) const monthAbbrs = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; // 提取UTC时间的各个部分 const day = utcDate.getUTCDate(); const month = monthAbbrs[utcDate.getUTCMonth()]; // 小时和分钟补0到两位,避免出现"19 Mar 3:2"这种格式 const hours = String(utcDate.getUTCHours()).padStart(2, '0'); const minutes = String(utcDate.getUTCMinutes()).padStart(2, '0'); return `${day} ${month} ${hours}:${minutes}`; } // 测试示例 const originalDate = "2018-03-19 13:02:53.0 UTC"; console.log(formatLastModified(originalDate)); // 输出:19 Mar 13:02
方式2:使用Intl.DateTimeFormat(推荐)
利用浏览器内置的国际化API,代码更简洁且兼容性好:
function formatLastModified(dateStr) { const utcDate = new Date(dateStr); // 配置格式化规则:英文、UTC时区、日(数字)、月(缩写)、小时/分钟(两位) const formatter = new Intl.DateTimeFormat('en-GB', { day: 'numeric', month: 'short', hour: '2-digit', minute: '2-digit', timeZone: 'UTC' }); // 替换掉默认生成的逗号(比如默认输出是"19 Mar, 13:02") return formatter.format(utcDate).replace(',', ''); } // 测试示例 console.log(formatLastModified("2018-03-19 13:02:53.0 UTC")); // 输出:19 Mar 13:02
后端Python场景
如果是在后端处理JSON数据再返回给前端,可以这样实现:
from datetime import datetime def format_last_modified(date_str): # 解析UTC日期字符串,匹配原格式:YYYY-MM-DD HH:MM:SS.f UTC date_obj = datetime.strptime(date_str, "%Y-%m-%d %H:%M:%S.%f %Z") # 格式化为目标样式:日 月缩写 小时:分钟 return date_obj.strftime("%d %b %H:%M") # 测试示例 original_date = "2018-03-19 13:02:53.0 UTC" print(format_last_modified(original_date)) # 输出:19 Mar 13:02
注意事项
- 时区问题:一定要确保使用UTC时间进行格式化,避免本地时区偏移导致时间显示错误(比如上面的代码都明确指定了UTC时区处理)。
- 月份缩写:如果需要其他语言的月份缩写,只需调整对应的语言参数(比如
Intl.DateTimeFormat的第一个参数,或者Python中设置locale)。
内容的提问来源于stack exchange,提问作者novafluff
相关产品推荐
相关产品推荐

