我正在添加这个问题,因为我是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
我正在开发一个与一些Google App Engine网络服务对话的Android应用程序.
此应用程序实现了一个聊天活动,它具有非常简单的功能:发送文本.
在调试过程中,我注意到我从服务器列出的消息没有按照我在应用程序上发送的顺序显示.我的第一个想法是问题来自服务器.
起初我检查了我收到的原始Json:
{
"messages": [
{
"message": "test 3",
"author": "daniel",
"message_id": "5724160613416960",
"sent_at": "2014-11-13T09:42:42.861950"
},
{
"message": "test 2",
"author": "daniel",
"message_id": "5649050225344512",
"sent_at": "2014-11-13T09:42:10.390960"
},
{
"message": "test 1",
"author": "daniel",
"message_id": "5178081291534336",
"sent_at": "2014-11-13T09:41:01.998830"
}
],
"kind": "company#chatsItem",
"etag": "\"RUCkC9XynEQNZ2t5E0aa41edXro/xRNtgkWIUbq4zCgmv2iq2fy-UIg\""
}
Run Code Online (Sandbox Code Playgroud)
如您所见,原始数据已正确排序.但这里有趣的部分.当我添加JSON解析器时,例如JacksonFactory(甚至是GsonFactory):
Company.Builder builder = new Company.Builder(AndroidHttp.newCompatibleTransport(), new JacksonFactory(), null);
Company service = builder.build();
ChatsChatCollectionResponse response = service.chats().list(user_id, album_id, token).execute();
List<ChatsChatResponse> messagesResponse = response.getMessages();
Run Code Online (Sandbox Code Playgroud)
以下是以与ChatsChatResponse上述相同的方式订购的商品:
[0] = {com.appspot.com_pany.company.model.ChatsChatResponse@830029063096} size …Run Code Online (Sandbox Code Playgroud) 从 Postgres 数据库我得到一个 6 位微秒(实际上是一个),例如 2014-11-10 04:05:06。999999
现在,当我应用“yyyy-MM-dd HH:mm:ss.SSS”的日期格式时,它将 999999 转换为相应的秒/分钟,导致日期不正确。请参阅下面的代码片段
String dt = "2014-11-10 04:05:06.999999";
String timeseriesFormat = "yyyy-MM-dd HH:mm:ss.SSS";
SimpleDateFormat dateFormat = new SimpleDateFormat(timeseriesFormat);
Date date = dateFormat.parse(dt);
System.out.println(dateFormat.format(date));
Run Code Online (Sandbox Code Playgroud)
结果于 2014-11-10 04:21:45.999
我想截断最后 3 位数字并保留日期2014-11-10 04:05:06.999。如何截断它?我不想使用任何框架,如 joda 等。
android ×2
date ×1
datetime ×1
format ×1
gson ×1
jackson ×1
java ×1
threetenabp ×1
threetenbp ×1