我正在添加这个问题,因为我是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
我正在从Web服务下载一些JSON数据.在这个JSON中,我有一些日期/时间值.UTC中的所有内容.如何解析此日期字符串,以便结果Date对象在当前语言环境中?
例如:服务器返回"2011-05-18 16:35:01",我的设备现在应显示"2011-05-18 18:35:01"(GMT +2)
我目前的代码:
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date myDate = simpleDateFormat.parse(rawQuestion.getString("AskDateTime"));
我需要将从服务器获得的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) 我需要将日期格式化为特定的字符串.
我使用SimpleDateFormat类来格式化日期,使用模式" yyyy-MM-dd'T'HH:mm:ssZ"它将当前日期返回为
" 2013-01-04T15:51:45+0530",但我需要为
" 2013-01-04T15:51:45+05:30".
以下是使用的编码,
Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ", Locale.ENGLISH);
Log.e(C.TAG, "formatted string: "+sdf.format(c.getTime()));
Run Code Online (Sandbox Code Playgroud)
输出:格式化字符串:2013-01-04T15:51:45+0530
我需要格式2013-01-04T15:51:45+05:30只是在gmt时间之间添加冒号.
因为我正在使用Google日历来插入活动,所以它只接受我提到的所需格式.
我尝试将 UTC 时间转换为本地时间,分钟工作正常,但小时总是晚 1 小时,例如,如果 UTC 时间是 04:55,我的手机时钟是 9:25,但我的代码生成 8:25
String dateStr = "04:55";
SimpleDateFormat df = new SimpleDateFormat("HH:mm");
df.setTimeZone(TimeZone.getTimeZone("UTC"));
Date date = null;
try {
date = df.parse(dateStr);
} catch (ParseException e) {
e.printStackTrace();
}
df.setTimeZone(TimeZone.getDefault());
String formattedDate = df.format(date);
time.setText(String.valueOf(formattedDate));
Run Code Online (Sandbox Code Playgroud) android ×5
java ×2
utc ×2
calendar ×1
datetime ×1
threetenabp ×1
threetenbp ×1
timestamp ×1
timezone ×1