我有一个Java组件来格式化检索的日期。这是我的代码:
Format formatter = new SimpleDateFormat("yyyyMMdd");
String s = "2019-04-23 06:57:00.0";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss.S");
try
{
Date date = simpleDateFormat.parse(s);
System.out.println("Formatter: "+formatter.format(date));
}
catch (ParseException ex)
{
System.out.println("Exception "+ex);
}
只要String具有以下格式,该代码就可以很好地工作 "2019-04-23 06:57:00.0";
我的问题是,如何调整此代码,使其适用于以下场景,例如,我的s
字符串可能具有如下值
String s = "2019-04-23 06:57:00.0";
or
String s = "2019-04-23 06:57:00";
Or
String s = "2019-04-23";
现在,如果我不通过短信,它将失败。
如果图案中有可选部件,则可以使用[
和]
。
例如
public static Instant toInstant(final String timeStr){
final DateTimeFormatter formatter = DateTimeFormatter
.ofPattern("yyyy-MM-dd HH[:mm[:ss[ SSSSSSSS]]]")
.withZone(ZoneId.of("UTC"));
try {
return Instant.from(formatter.parse(timeStr));
}catch (DateTimeException e){
final DateTimeFormatter formatter2 = DateTimeFormatter
.ofPattern("yyyy-MM-dd")
.withZone(ZoneId.of("UTC"));
return LocalDate.parse(timeStr, formatter2).atStartOfDay().atZone(ZoneId.of("UTC")).toInstant();
}
}
盖
yyyy-MM-dd
yyyy-MM-dd HH
yyyy-MM-dd HH:mm
yyyy-MM-dd HH:mm:ss
yyyy-MM-dd HH:mm:ss SSSSSSSS
问题内容: 当我到达下面的df.date()行时,使用此格式的日期时应用程序崩溃: 致命错误:解开Optional值时意外发现nil 我也看到了这一点: 错误:执行被中断,原因:EXC_BAD_INSTRUCTION(代码= EXC_I386_INVOP,子代码= 0x0) 我有可以采用这种格式的字符串 但有时采用这种格式 这是在上述格式下崩溃的代码段: 如何使用基本一个功能处理两种格式? 问题答
问题内容: 我正在尝试解析文档中的某些日期。看来用户已经以类似但并非确切的格式输入了这些日期。 格式如下: 尝试解析所有这些的最佳方法是什么?这些似乎是最常见的,但是我想让我感到困扰的是,如果我的模式“ M / yyyy”永远不会在“ MM / yyyy”之前出现,我是否必须设置try / catch块以最小限制嵌套到最大限制方式?看来肯定会花费很多代码重复才能实现此目的。 问题答案: 你需要为每
我有一个带有varchar2列(my_column)的表(我的表),该列以几乎所有已知的日期格式灌输可能是日期的数据。比如dd/mm/yyyyy mm/dd/yyyy ddMONyyyy ddmmyyyyy yymmddmm.dd.yydd/mm/yyyy hh: 24: ss mm-dd-yyyy等等。它还可能包含一个免费的文本数据,可能是数字或文本。我需要最快的方法将其检索为日期,如果它不能匹
我正在尝试用varchar列中的更新日期列 这里,是varchar数据类型,是日期数据类型。有多种类型的日期格式,例如,09302012, 9/30/2012, 2012-09-30和更多不同的类型 如何编写单个查询以在单个查询中使用各种类型的日期格式更新列。 已编辑::: 抱歉搞砸了...我刚刚意识到这些是ssis包中的单独(部分)更新... 我们有不同类型(6)的品牌,每个品牌都会发送不同日期
问题内容: 我想格式化为。我已经尝试了以下步骤。 但我低于例外。 我该怎么办? 问题答案: 在这里,这有效: 在您的第一个样式中删除多余的“ T” 第二种格式不正确,应为dd-MMM-yyyy。 看看SimpleDateFormat的Javadoc
问题内容: 具有String str“ May 23 2011 12:20:00”,想要将其转换为这样的日期: 它始终为我提供ParseException Unparsable日期格式:“ May 23 2011 12:20:00”。 寻找类似的问题,似乎一切正确。 怎么了? 问题答案: 如果您的VM的默认语言环境不是英语,则可能需要另外指定 Locale :