Java:Datetime-to-Date对象

Java:Datetime-to-Date对象,java,string,datetime,Java,String,Datetime,我有一个SQL时间戳字符串,例如。g String timestamp = 2016-12-11 14:26:35 我想得到今天的差异,以及表单中的字符串 11.12.206 14:26:35 我认为要做到这一点,我必须从对象中获取毫秒数,并将它们解析为日期/日历对象 如何做到这一点,或者有更简单的方法吗?如果我理解您的问题,您只需将SQL时间戳转换为对象数据。这可以通过SimpleDataFormat完成 看这里 在那之后,你可以用约达时间轻松地区分两次约会 干杯这些问题已经在堆栈溢出问题

我有一个SQL时间戳字符串,例如。g

String timestamp = 2016-12-11 14:26:35
我想得到今天的差异,以及表单中的字符串

11.12.206 14:26:35
我认为要做到这一点,我必须从对象中获取毫秒数,并将它们解析为日期/日历对象


如何做到这一点,或者有更简单的方法吗?

如果我理解您的问题,您只需将SQL时间戳转换为对象数据。这可以通过SimpleDataFormat完成

看这里

在那之后,你可以用约达时间轻松地区分两次约会


干杯

这些问题已经在堆栈溢出问题上讨论过很多次了。你的问题与许多其他问题完全相同。因此,请搜索详细信息。搜索下面所示的类名以及诸如
appead
之类的词

下面是一个简单的答案

ISO 8601

将输入字符串从SQL格式转换为标准ISO 8601格式,用“<代码> t>代码>替换中间的空间。

String input = "2016-12-11 14:26:35".replace( " " , "T" );
LocalDateTime
解析为
LocalDateTime
,因为此字符串没有任何时区或UTC偏移的指示

LocalDateTime ldt = LocalDateTime.parse( input );
ZoneDateTime
将时区用作此字符串后面的含义。你是说下午两点在奥克兰、巴黎还是蒙特勒尔

ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime zdtThen = ldt.atZone( z );
获取当前时刻。同样,时区至关重要。不能被忽视或希望离开

ZonedDateTime zdtNow = ZonedDateTime.now( z );
区别? 至于“获得差异”,你没有解释这意味着什么

如果要将两天之间的时间跨度表示为整天,请使用
Period

Period p = Period.between( zdtThen.toLocalDate() , zdtNow.toLocalDate() );
如果您希望小时分钟秒过去,请使用
持续时间

Duration d = Duration.between( zdtThen , zdtNow );
要作为一对时间点进行跟踪,请获取库并使用类


您正在使用Java8吗?最佳答案可能取决于此。在Java1.7中,我们倾向于使用Joda时间来进行更复杂的时间计算,尤其是在需要获得时间间隔时。Java8具有内置选项。也许看一眼丹阿姆斯特朗是的,我看。如何从Timestamp字符串中获取Date对象?查找“Timestamp without timezone with Second Resolution Example”。您将找到“DateTimeFormat.forPattern”,它将帮助您找到需要的地方。@DanArmstrong是的,它很有效,谢谢you@DanArmstrong仅供参考,使用Joda时间库。该项目现已启动,建议迁移到类。
Interval interval = Interval.of( zdtThen.toInstant() , zdtNow.toInstant() );