如何将Twitter日期处理函数的月份转换为西班牙语?
解决Twitter时间月份转为西班牙语的问题
你已经有了能正常运行的推文时间处理函数,现在只需要把英文月份替换成西班牙语就行啦,这里给你两种实用方案,按需选择:
方案一:直接替换字符串中的英文月份缩写
如果不想改动原有函数的核心逻辑,直接针对原始时间字符串做替换是最省心的方式:
var $time = "Fri May 04 20:33:17 +0000 2018"; function relative_time(time_value) { // 定义英文月份缩写与对应西班牙语月份的映射 const enMonths = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; const esMonths = ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre']; // 遍历替换每个月份 enMonths.forEach((enMonth, index) => { time_value = time_value.replace(enMonth, esMonths[index]); }); // 这里保留你原有函数里的其他逻辑(比如相对时间计算、格式输出等) // 示例:处理后的时间字符串已替换为西班牙语月份 return time_value; } // 测试验证 console.log(relative_time($time)); // 输出: "Fri Mayo 04 20:33:17 +0000 2018"
方案二:通过Date对象提取月份索引匹配西语月份
这种方法更严谨,适合需要对日期做更多格式化或时区处理的场景:
var $time = "Fri May 04 20:33:17 +0000 2018"; function relative_time(time_value) { // 定义西班牙语月份数组(索引0对应1月,依次类推) const esMonths = ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre']; // 将Twitter时间字符串转为Date对象,自动解析时区 const date = new Date(time_value); // 通过月份索引获取对应的西班牙语月份 const esMonth = esMonths[date.getMonth()]; // 提取其他日期信息,按需组装格式 const day = date.getDate().toString().padStart(2, '0'); const hours = date.getHours().toString().padStart(2, '0'); const minutes = date.getMinutes().toString().padStart(2, '0'); const year = date.getFullYear(); // 示例组装成西班牙语常用日期格式 const formattedDate = `${day} de ${esMonth} de ${year}, ${hours}:${minutes}`; // 可继续加入你原有函数的相对时间计算逻辑 return formattedDate; } // 测试验证 console.log(relative_time($time)); // 输出: "04 de Mayo de 2018, 20:33"
小提示
- 方案一要注意:Twitter API返回的确实是3位英文月份缩写,所以映射关系完全匹配,不用担心替换错误。
- 方案二中如果需要展示本地时区的时间,可以把
getMonth()、getDate()等方法换成getUTCMonth()、getUTCDate(),根据需求调整即可。
内容的提问来源于stack exchange,提问作者Meek
相关产品推荐
相关产品推荐

