Java 将两个GMT时间实例之间的时间差计算为字符串
我正在尝试以字符串格式获取日期之间的时差,就像4小时前一样 这是我的密码 据我所知,Java 将两个GMT时间实例之间的时间差计算为字符串,java,android,eclipse,Java,Android,Eclipse,我正在尝试以字符串格式获取日期之间的时差,就像4小时前一样 这是我的密码 据我所知,Calendar.getInstance()给出的时间是GMT。我的服务器时间是GMT,因此差异应该是GMT与GMT,但是此代码的差异是GMT(服务器)与GMT+5(我当前的时区) 我怎样才能只在格林威治标准时间做出改变 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date converted
Calendar.getInstance()
给出的时间是GMT。我的服务器时间是GMT,因此差异应该是GMT与GMT,但是此代码的差异是GMT(服务器)与GMT+5(我当前的时区)
我怎样才能只在格林威治标准时间做出改变
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();
Calendar.getInstance()返回计算机设置的时区。所以,除非你总是能控制它,否则我建议你使用getInstance(TimeZone)方法
但如果你想要一个更简单的方法,我会建议你找乔达的时间
尝试以下代码。它清楚地演示了如何将字符串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();
}
您可以将lacale传递给SimpleDataFormat的构造函数SimpleFormat与此无关。它已经在GMTCalendar中了。getInstance()不以GMT表示时间。它返回计算机的时区。它仍然是一样的,我认为默认情况下它确实发送GMT时间,这是DateUtils的问题。getRelativeTimeSpanStringi找到了简单的解决方案。我将服务器时间调到时区,然后计算出差值。迄今为止最简单的解决方案。设置dateFormatGmt.setZone(TimeZone.getDefault())
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();
}