我试图将日期之间的时差视为4小时前的字符串格式。
这是我的代码
根据我的理解,Calendar.getInstance()
给出时间作为GMT。我的服务器时间是GMT所以差异应该是GMT Vs GMT但是这个代码的差异是GMT(服务器)Vs. GMT +5(我当前时区)
我如何才能与GMT产生差异?
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date convertedDate = new Date();
Calendar systemCal = Calendar.getInstance();
long currentTime = systemCal.getTimeInMillis();
/***********************************/
Calendar cal = Calendar.getInstance();
try {
convertedDate = dateFormat.parse(dateString);
} catch (Exception e) {
return "";
}
cal.setTime(convertedDate);
/***********************************/
CharSequence myDateString = DateUtils.getRelativeTimeSpanString(cal.getTimeInMillis(), currentTime, DateUtils.MINUTE_IN_MILLIS);
return myDateString.toString();
答案 0 :(得分:0)
Calendar.getInstance()返回计算机设置的时区。因此,除非你总是控制我,否则我会建议使用getInstance(TimeZone区域)方法。
http://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html#getInstance%28java.util.TimeZone%29
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
但是如果你想要一个更简单的方法来做这件事,我建议你去看看joda时间。
答案 1 :(得分:0)
请尝试以下代码。它清楚地说明了如何将String datetime解析为GMT时区。关键点是设置默认时区的第一行。
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
SimpleDateFormat dateFormatGmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
try {
Date convertedDate = dateFormatGmt.parse("2015-01-29 10:05:00");
long diffSeconds = (cal.getTimeInMillis() - convertedDate.getTime()) / 1000;
System.out.println("convertedDate: " + convertedDate);
System.out.println("current: " + cal.getTime());
System.out.println("Difference in seconds: " + diffSeconds);
}
catch (Exception e) {
e.printStackTrace();
}