日期2018-09-06T10:12:21-0300属于哪种格式?如何转为06 Sep格式?
问题解答
1. 日期格式所属标准
你给出的字符串属于 ISO 8601 国际标准的日期时间表示格式,完整结构说明如下:
2018-09-06:年-月-日的日期部分T:固定分隔符,用于分隔日期和时间部分10:12:21:时:分:秒的时间部分-0300:时区偏移量,代表当前时间比UTC(协调世界时)慢3小时
2. 转换为"06 Sep"格式的实现方案
下面给出几种常用开发语言的实现示例:
Python 实现
可使用dateutil库处理带时区的时间解析,Python 3.7+也可直接用自带的fromisoformat方法:
from datetime import datetime from dateutil import parser date_str = "2018-09-06T10:12:21-0300" dt = parser.parse(date_str) # %d对应两位日期,%b对应英文月份缩写 result = dt.strftime("%d %b") print(result) # 输出:06 Sep
JavaScript 实现
const dateStr = "2018-09-06T10:12:21-0300"; const dt = new Date(dateStr); const day = String(dt.getDate()).padStart(2, '0'); const month = dt.toLocaleString('en-US', { month: 'short' }); const result = `${day} ${month}`; console.log(result); // 输出:06 Sep
Java 实现
import java.time.OffsetDateTime; import java.time.format.DateTimeFormatter; import java.util.Locale; public class DateConvert { public static void main(String[] args) { String dateStr = "2018-09-06T10:12:21-0300"; DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZ"); OffsetDateTime dt = OffsetDateTime.parse(dateStr, inputFormatter); DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("dd MMM", Locale.US); String result = dt.format(outputFormatter); System.out.println(result); // 输出:06 Sep } }
内容的提问来源于stack exchange,提问作者Lucas Moro
相关产品推荐
相关产品推荐

