如何使用打印Date
成格式?HH:mm+-GMT
SimpleDateFormat
"EEE, d MMM yyyy HH:mm:ss Z" Wed, 4 Jul 2001 12:08:56 -0700
"yyMMddHHmmssZ" 010704120856-0700
我怎么能打印:13:01-7
对于上面的例子?那么,用最短的可能值表示时区偏移量?
如果您使用的是 Java 7,则可以使用 X 标志来获取时区。
Java 7 SimpleDateFormat javadoc:
X 时区 ISO 8601 时区 -08;-0800; -08:00
试试下面:
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
了解计算机时间是如何工作的非常重要。话虽如此,我同意如果创建 API 来帮助您像实时一样处理计算机时间,那么它应该以允许您像实时一样对待它的方式工作。在大多数情况下,情况确实如此,但确实存在一些需要注意的重大疏忽。
反正我跑题了!!如果您有 UTC 偏移量(在 UTC 中工作比 GMT 偏移量更好),您可以以毫秒为单位计算时间并将其添加到您的时间戳中。请注意,SQL 时间戳可能与 Java 时间戳不同,因为计算从纪元开始经过的方式并不总是相同 - 取决于数据库技术和操作系统。
我建议您使用 System.currentTimeMillis() 作为您的时间戳,因为这些可以在 java 中更一致地处理,而无需担心将 SQL Timestamps 转换为 java Date 对象等。
要计算您的偏移量,您可以尝试以下操作:
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());
我希望这是有帮助的!
试试这个,你引用的最短的可能,
long millis = new Date().getTime();
System.out.println(SimpleDateFormat.getTimeInstance(SimpleDateFormat.SHORT).format(millis));