我正在添加这个问题,因为我是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中的日期转换,因为我正在使用以下代码片段将UTC时间转换为IST格式.当我运行它时,它在本地正常工作但是当我在服务器中部署它不转换时,它仅显示utc时间本身.服务器端是否需要任何配置.请帮帮我.
代码链:
DateFormat sdf = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
String pattern = "dd-MM-yyyy HH:mm:ss";
SimpleDateFormat formatter;
formatter = new SimpleDateFormat(pattern);
try {
String formattedDate = formatter.format(utcDate);
Date ISTDate = sdf.parse(formattedDate);
String ISTDateString = formatter.format(ISTDate);
return ISTDateString;
}
Run Code Online (Sandbox Code Playgroud) 即使在Java工作大约15年,人们总是会遇到处理日期和时间的问题......
情况就是这样:我从一些外部系统获取时间戳作为String表示.时间戳的语义是它代表UTC日期.此时间戳必须放在一个实体中,然后放入一个TIMESTAMP字段中的PostgreSQL数据库中.另外,我需要将相同的时间戳作为本地时间(在我的情况下为CEST)放入实体,然后放入TIMESTAMP WITH TIME ZONE字段中的数据库中.
确保无论执行代码的机器设置是什么的正确方法是什么,时间戳都正确地存储在实体中(与其他UTC时间戳进行一些验证)和数据库中(以便稍后在报告中使用它们)上)?
这是代码,在我的本地机器上工作正常:
SimpleDateFormat sdfUTC = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
sdfUTC.setTimeZone(TimeZone.getTimeZone("UTC"));
Date utcTimestamp = sdfUTC.parse(utcTimestampString);
// getMachinesTimezone is some internal util method giving the TimeZone object of the machines Location
Calendar localTimestamp = new GregorianCalendar(getMachinesTimezone());
localTimestamp.setTimeInMillis(utcTimestamp.getTime());
Run Code Online (Sandbox Code Playgroud)
但是当在服务器上执行相同的代码时,会导致不同的时间,所以我认为这不是处理它的正确方法.有什么建议?
PS:我在这个论坛上搜索了Joda Time,但是在给定的项目中我不能引入新的库,因为我只改变现有的模块,所以我必须使用标准的JDK1.6
我有一个格式为服务器的日期yyyy-mm-dd HH:mm:ss。我有当前时间(以毫秒为单位)System.currentTimeMillis()。我想比较两个日期,看看从服务器收到的日期是否是未来日期,以及是否为未来日期安排警报。所以我的问题是如何比较这 2 个不同格式的日期以及如何获得剩余时间(未来-当前)以便安排闹钟。
编辑:我已经尝试以毫秒为单位解析日期,但它不会返回与 System.currentTimeMillis(). 所以它失败了
android ×2
date ×2
datetime ×2
java ×2
timezone ×2
cloud ×1
postgresql ×1
server ×1
threetenabp ×1
threetenbp ×1