我正在添加这个问题,因为我是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
我经常遇到关于Java Date和其他与日期时间相关的类的负面反馈.作为一名.NET开发人员,我不能完全(没有使用它们)了解它们实际上有什么问题.
任何人都可以对此有所了解吗?
正如大多数人现在痛苦地意识到的那样,用于处理日历日期的Java API(特别是类java.util.Date和java.util.Calendar)是一个糟糕的混乱.
脱离我的头顶:
现在我的问题是:
这些类是如何进入Java SDK的?大多数这些问题看起来相当明显(特别是Date是可变的)并且应该很容易避免.那怎么回事?时间压力?或者回想起来的问题是否明显?
我意识到这不是一个严格的编程问题,但我发现理解API设计如何出错是很有趣的.毕竟,错误总是一个很好的学习机会(我很好奇).
我需要将从服务器获得的UTC时间戳转换为本地设备时间.目前我的时间差5小时.例如,当我发布到服务器的帖子时间说5小时前而不是一秒钟前.如何解决这个问题.谢谢
以下是我的代码
long timestamp = cursor.getLong(columnIndex);
CharSequence relTime = DateUtils
.getRelativeTimeSpanString(timestamp * 1000
+ TimeZone.getDefault().getRawOffset(),
System.currentTimeMillis(),
DateUtils.MINUTE_IN_MILLIS);
((TextView) view).setText(relTime);
Run Code Online (Sandbox Code Playgroud) android ×2
datetime ×2
java ×2
api-design ×1
date ×1
threetenabp ×1
threetenbp ×1
timestamp ×1
utc ×1