如何使用Date
将HH:mm+-GMT
打印成格式
"EEE, d MMM yyyy HH:mm:ss Z" Wed, 4 Jul 2001 12:08:56 -0700
"yyMMddHHmmssZ" 010704120856-0700
我怎么能为上面的例子打印:13:01-7
呢?那么,时区偏移量要用最短的可能值表示吗?
发布于 2013-11-12 04:21:14
如果您在Java 7上,可以使用X标志来获取时区。
Java7 SimpleDateFormat javadoc:
X时区ISO 8601时区-08;-0800;-08:00
发布于 2013-11-12 04:22:51
试着在下面:
import java.util.Date;
import java.text.SimpleDateFormat;
class array05{
public static void main(String[] args){
SimpleDateFormat sf = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z");
System.out.println(sf.format(new Date()));
}
}
对我来说,它一直在打印Вт, 12 ноя 2013 14:22:24 +0200
发布于 2013-11-12 04:22:03
理解计算机时间是如何工作是非常重要的。话虽如此,我同意,如果创建了一个API来帮助您像实时一样处理计算机时间,那么它的工作方式应该允许您将其视为实时处理。在大多数情况下,这是事实,但也有一些重大的疏忽,确实需要注意。
不管怎样,我离题了!!如果您有UTC偏移量(最好在UTC中工作,而不是GMT偏移量),则可以以毫秒为单位计算时间并将其添加到时间戳中。请注意,SQL时间戳可能与Java时间戳不同,因为计算时间间隔的方式并不总是完全依赖于数据库技术和操作系统。
我建议您使用System.currentTimeMillis()作为时间戳,因为可以在java中更一致地处理这些时间戳,而不必担心将SQL时间戳转换为java对象等。
要计算偏移量,可以尝试如下所示:
Long gmtTime =1317951113613L; // 2.32pm NZDT
Long timezoneAlteredTime = 0L;
if (offset != 0L) {
int multiplier = (offset*60)*(60*1000);
timezoneAlteredTime = gmtTime + multiplier;
} else {
timezoneAlteredTime = gmtTime;
}
Calendar calendar = new GregorianCalendar();
calendar.setTimeInMillis(timezoneAlteredTime);
DateFormat formatter = new SimpleDateFormat("dd MMM yyyy HH:mm:ss z");
formatter.setCalendar(calendar);
formatter.setTimeZone(TimeZone.getTimeZone(timeZone));
String newZealandTime = formatter.format(calendar.getTime());
我希望这是有帮助的!
https://stackoverflow.com/questions/19928615
复制相似问题