我正在添加这个问题,因为我是Java和Android的新手,我搜索了几个小时试图解决这个问题.答案来自相关答案的组合,所以我想我会记录我为其他可能正在努力的人学到的东西.见答案.
对于一些背景知识,我的经验主要是PHP的Web开发和一点Ruby.我唯一的操作系统是Linux(Ubuntu Studio),我(不情愿地)在Android Studio 2.1.2中开发我的第一个Android应用程序.我的Java设置如下:
>java -version
> openjdk version "1.8.0_91"
> OpenJDK Runtime Environment (build 1.8.0_91-8u91-b14-3ubuntu1~15.10.1-b14)
> OpenJDK 64-Bit Server VM (build 25.91-b14, mixed mode)
Run Code Online (Sandbox Code Playgroud) datetime android android-gradle-plugin threetenbp threetenabp
我正在尝试将日期06-12-2015 02:10:10 PM从默认区域转换为UTC ZonedDateTime.
LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
ZonedDateTime utc = ZonedDateTime.of(localDateTime, ZoneOffset.UTC);
Run Code Online (Sandbox Code Playgroud)
但utc返回2015-12-06T14:10:10Z而不是06-12-2015 09:10:10 AM
如何将日期从默认区域转换为UTC?这里给出的答案将当前时间转换为UTC.
我必须将java.util.Date转换为LocalDate.我从这里偷了例子:将java.util.Date转换为java.time.LocalDate
但注意到一些奇怪的事
当我刚刚使用时,new LocalDate()我在debuger中看到:

但是当我这样做时:
date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate()然后在debuger中我看到:

所以iLocalMillis有year等等.这对我来说会引起问题.为什么会这样?我可以在转换后获得完全相同的详细信息new LocalDate()吗?