我有一个文件,可以有日期修改值与日期或日期时间的格式。我曾将该值解析为:
String t = "2012-01-05T21:21:52.834Z";
logger.info(ZonedDateTime.parse(t).toEpochSecond() * 1000);
现在,字符串也可以是
t = "2012-01-05";
LocalDate date = LocalDate.parse(t, DateTimeFormatter.ISO_DATE);
logger.info(date.atStartOfDay(ZoneId.of("UTC")).toEpochSecond() * 1000);
一个可能的解决方案是使用带有默认值的可选模式。使用DateTimeFormatterBuilder
,您可以在一个可选部分(即由[...]
包围)中附加需要的模式的时间部分。在没有字段的情况下,我们通过将其设置为0来提供默认值。offset_seconds
字段变为0表示与UTC之间没有偏移量。
public static void main(String[] args) {
String[] dates = { "2012-01-05T21:21:52.834Z", "2012-01-05" };
DateTimeFormatter formatter =
new DateTimeFormatterBuilder().appendPattern("yyyy-MM-dd['T'HH:mm:ss.SSSz]")
.parseDefaulting(ChronoField.HOUR_OF_DAY, 0)
.parseDefaulting(ChronoField.MINUTE_OF_HOUR, 0)
.parseDefaulting(ChronoField.SECOND_OF_MINUTE, 0)
.parseDefaulting(ChronoField.NANO_OF_SECOND, 0)
.parseDefaulting(ChronoField.OFFSET_SECONDS, 0)
.toFormatter();
for (String date : dates) {
ZonedDateTime zonedDateTime = ZonedDateTime.parse(date, formatter);
System.out.println(zonedDateTime.toEpochSecond() * 1000);
}
}
本实例演示了如何通过DateFormat类的parse方法根据不同的本地环境解析日期/时间字符串,并将其转换成Date对象。在最后还演示了parse方法如何解析不符合日期/时间逻辑的字符串。 例子 : 解析日期/时间字符串 实例的代码如下: package chapter8; import java.text.DateFormat; import java.util.Date; import ja
我有一个格式化的字符串日期 2020/04/16 (年/月/日) 我想把这个字符串解析成日期时间 显然不起作用,没有正确的日期格式。 有人知道把这个字符串解析成日期时间的最好方法是什么吗?
问题内容: 如何在Go中解析非标准的日期/时间字符串。例如,如果我想将字符串转换为?该功能应该允许您指定格式。 http://play.golang.org/p/v5DbowXt1x 这导致了恐慌。 从逻辑上讲这是有道理的,因为它应该如何知道哪一天和哪一个月。 其他语言具有类似于以下功能: 我在Go文档中找不到这样的功能,我唯一选择正则表达式吗? 问题答案: time.Parse正在寻找一些关键值
问题内容: 如何将类似“ 01-Jan-1995”的字符串解析为Python对象? 问题答案: 总体来说,您可以使用或模块中的函数来分析日期和时间字符串。您的示例可以解析为: 请注意,解析月份的名称是与语言环境相关的。下表显示了用于解析日期和时间的各种格式的指令。
我正在尝试在中解析这些日期,然后获取表示形式。 我阅读了这个类似的答案,并创建了一个方法来解析上述日期并返回具有所需格式的: 然而,没有一个图案是匹配的。我这里缺少什么? 更新:在这两个日期中,我都收到了字符的异常。
我有一个变量,它包含以下值: 我目前正在使用以下代码将其格式化为字符串:.使用此代码,我得到以下值: 我需要这个更准确。我想要得到的精确值在以下精度范围内: 我在以下链接上做了一些研究:http://www.w3.org/TR/NOTE-datetime 以下是我的发现: 此配置文件没有指定可以使用多少位数来表示每秒的小数部分。允许分数秒的采用标准必须规定最小位数(大于或等于一的数字)和最大位数(