Go语言解析含句点的非标准日期“24-Sep.-20”为“24-09-2020”的方法
解决方案
以下是不同常用编程语言的实现方式,无需额外预处理删除月份后的句点,直接匹配对应格式即可完成解析转换:
Python 实现
使用标准库datetime即可完成解析,格式串中直接匹配带点的月份缩写:
from datetime import datetime import locale # 非英文环境需临时切换为英文时区,确保月份缩写匹配正常 locale.setlocale(locale.LC_TIME, 'en_US.UTF-8') origin_str = "24-Sep.-20" # 输入格式串对应规则:日-月份缩写. -两位年份 parsed_date = datetime.strptime(origin_str, "%d-%b.-%y") # 输出为目标格式 result = parsed_date.strftime("%d-%m-%Y") print(result) # 输出结果:24-09-2020
JavaScript 实现
原生JS可以通过月份映射表快速实现,不需要引入第三方库:
const originStr = "24-Sep.-20"; // 自定义带点的月份缩写映射 const monthMap = { 'Jan.':'01','Feb.':'02','Mar.':'03','Apr.':'04','May.':'05','Jun.':'06', 'Jul.':'07','Aug.':'08','Sep.':'09','Oct.':'10','Nov.':'11','Dec.':'12' }; const [day, monthAbbr, shortYear] = originStr.split('-'); // 两位年份默认补20前缀,存在19xx场景可自行调整补全规则 const fullYear = `20${shortYear}`; const result = `${day}-${monthMap[monthAbbr]}-${fullYear}`; console.log(result); // 输出结果:24-09-2020
Java 实现
使用DateTimeFormatter指定对应格式和英文时区即可:
import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.Locale; public class DateConvert { public static void main(String[] args) { String originStr = "24-Sep.-20"; DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("d-MMM.-yy", Locale.ENGLISH); LocalDate parsedDate = LocalDate.parse(originStr, inputFormatter); DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("dd-MM-yyyy"); String result = parsedDate.format(outputFormatter); System.out.println(result); // 输出结果:24-09-2020 } }
内容的提问来源于stack exchange,提问作者Nanda Fitra
相关产品推荐
相关产品推荐

