如何将Facebook JSON中的created_time字符串转换为指定格式?
嘿,这个时间格式转换其实挺 straightforward 的,我给你整理了两种常用编程语言的实现方案,你可以根据自己的项目技术栈来选:
JavaScript 实现
如果你是在前端或者Node.js环境下开发,可以用原生的Date对象来处理:
function formatFacebookTime(createdTime) { // 解析UTC时间字符串,Facebook的格式符合ISO标准,Date可以直接识别 const date = new Date(createdTime); // 提取UTC时间的各部分(如果需要转本地时区,把getUTC*换成get*即可) const year = date.getUTCFullYear(); const month = String(date.getUTCMonth() + 1).padStart(2, '0'); // 月份从0开始,所以+1 const day = String(date.getUTCDate()).padStart(2, '0'); let hours = date.getUTCHours(); const minutes = String(date.getUTCMinutes()).padStart(2, '0'); // 转换为12小时制并区分上下午 const period = hours >= 12 ? 'pm' : 'am'; hours = hours % 12; hours = hours || 12; // 把0点(午夜)转换成12点 // 拼接成目标格式 return `${year}/${month}/${day} ${hours}:${minutes}${period}`; } // 测试一下 const fbTime = '2018-04-17T17:25:23+0000'; console.log(formatFacebookTime(fbTime)); // 输出: 2018/04/17 5:25pm
这个方法的好处是不需要额外引入第三方库,原生就能搞定。如果你的项目里已经在用Day.js、Moment.js这类时间库,也可以用它们的格式化方法,会更简洁。
Python 实现
如果是后端用Python开发,用标准库的datetime模块就能轻松处理:
from datetime import datetime def format_facebook_time(created_time): # 按照Facebook的时间格式解析字符串 dt = datetime.strptime(created_time, '%Y-%m-%dT%H:%M:%S%z') # 格式化目标格式:%I是12小时制,%p是AM/PM,转成小写 formatted_str = dt.strftime('%Y/%m/%d %I:%M%p').lower() # 去掉小时的前导零(比如把"05:25pm"变成"5:25pm") formatted_str = formatted_str.replace(' 0', ' ') return formatted_str # 测试 fb_time = '2018-04-17T17:25:23+0000' print(format_facebook_time(fb_time)) # 输出: 2018/04/17 5:25pm
这里strptime的格式符完全匹配Facebook的时间字符串,strftime直接生成我们需要的格式,最后去掉小时的前导零就和你要的效果一致了。如果需要转换为本地时区,可以调用dt.astimezone()方法。
内容的提问来源于stack exchange,提问作者Admee
相关产品推荐
相关产品推荐

