String value = "September 22nd 2015, 10:39:42 am";
String format = "dd/MM/yyyy HH:mm:ss";
SimpleDateFormat sdf = new SimpleDateFormat(format);
try {
Date date = sdf.parse(value);
System.out.println(date);
System.out.println(sdf.format(date));
}
catch (ParseException ex) {
ex.printStackTrace();
}
该格式的棘手之处在于处理序数(如22
),即处理右后缀。没有内置模式。为此,我们必须在DateTimeFormatterBuilder
的帮助下构建自己的DateTimeFormatter
。
DateTimeFormatterBuilder
有一个方法AppendText(field,textLookup)
,其目标是在给定映射中查找已读文本,并用与该值关联的键替换它。这意味着我们需要建立一个地图所有可能的天(1到31)与他们相应的后缀。
我从这个答案中取了转换代码。
private static final Map<Long, String> DAYS_LOOKUP =
IntStream.rangeClosed(1, 31).boxed().collect(toMap(Long::valueOf, i -> getOrdinal(i)));
public static void main(String[] args) throws Exception {
DateTimeFormatter formatter = new DateTimeFormatterBuilder().appendPattern("MMMM")
.appendLiteral(" ")
.appendText(ChronoField.DAY_OF_MONTH, DAYS_LOOKUP)
.appendLiteral(" ")
.appendPattern("yyyy")
.appendLiteral(", ")
.appendPattern("hh")
.appendLiteral(":")
.appendPattern("mm")
.appendLiteral(":")
.appendPattern("ss")
.appendLiteral(" ")
.parseCaseInsensitive()
.appendPattern("a")
.toFormatter(Locale.ENGLISH);
LocalDateTime dateTime = formatter.parse("September 22nd 2015, 10:39:42 am", LocalDateTime::from);
String text = DateTimeFormatter.ofPattern("MM/dd/yyyy HH:mm:ss").format(dateTime);
System.out.println(text);
}
private static String getOrdinal(int n) {
if (n >= 11 && n <= 13) {
return n + "th";
}
switch (n % 10) {
case 1: return n + "st";
case 2: return n + "nd";
case 3: return n + "rd";
default: return n + "th";
}
}
周日->明谷-0 周一->赛宁-1 周二->Selasa-2 帮我谢谢
问题内容: 我正在以编程方式从ldap导出用户。因此,我正在从ldap检索用户。属性之一是。 我必须转换的值之一是:直接将其拆分成以下格式:+ 。问题在于应用程序正在CET时区运行,并且存储的时间是UTC,这可能由表示。是,并且本地表示形式是。夏季似乎是2个小时,而冬季是1个小时。 我检查了SimpleDateFormat,发现时区有一个占位符,但是它是不同的格式。 由于忽略日期时区,将显示错误的
问题内容: 我在具有Excel Date序列号Date的csv文件中得到了名为DateOfBirth的列 例子: 当我在excel中格式化单元格时,这些将转换为 我需要在SSIS或SQL中进行此转换。如何做到这一点? 问题答案: 在SQL中:
问题内容: 我正在尝试将AEDT日期转换为dd / MM / yyyy HH:mm:ss z,但它给了我异常: 线程“主”中的异常java.text.ParseException:无法解析的日期:java.text.DateFormat.parse(DateFormat.java:337)的“ 2014年3月3日16:56:46 AEDT” 请在这件事上给予我帮助.... 我需要将用户时间转换为我
问题内容: 我的json 响应 包含一个 CreatedOn 日期: 我需要将 CreatedOn 转换为简单的日期格式,并 计算从CreatedOn日期到当前日期的差异天数。 当我调试下面的代码字符串 CreatedOn时 显示一个空值。怎么会? 问题答案: 要么 考虑使用JSON方法而不是包含。JSON具有“ has()”,用于验证密钥是否存在。 您还应该确保首先尝试{}捕获{}字符串,以确保
我们正在使用Spring Data JPA访问Derby-DB。时态值定义为java.time.LocalDate(java 8 time api)。Spring Data现在随Jsr310Convertersorg.springframework.data.convert.。将LocalDate转换为java.util.Date,因为据我所知,JPA规范到目前为止不支持LocalDate。 我们