1、首先从数据库取数据的过程,数据库的时间字段starts存的是datetime类型,它是一个和时区相关的string(显然:string都是和时区相关的),而且数据库是按照CST时区存的时间。
2、程序中从数据库取数据用的sql语句:这里只是简单的用DATE_FORMAT函数把datetime类型的starts字段转换为我们需要的格式 %Y%m%d%H%i%S 而已。
3、然后看这样一段转换时间的java代码:
4、计算结果如下图所示:
5、而正因为其与时区的无关性,才使得我们的存储数据(时间)是一致的(时区一致性)。 一般的我尺攵跋赈们将now存储于数据库中,当我们需要展现数据时,将now格式化成想要的格式,如:2011-12-04 21:22:24 而这个功能一般交由java.text.DateFormat来实现。例如:
6、我们葛激握颟发现snow是带时间(如2011-12-04 21:22:24)的字符串,那么 2011-12-04 21:22:24 这个时间是哪个时区的时间呢? 默认情况下,SimpleDateFormat 取得本地系统的时区(我的时区为GMT+8北京),然后按照 pattern("yyyy-MM-dd HH:mm:ss")格式化now, 此时输出的就是 GMT+8 区的时间了。如果想支持国际化时间,则先指定时区,然后再格式化date数据。例如:
7、另外,你可以通过如下代码修改本地时区信息: