我有Joda-Time DateTime个对象,需要分别设置日期和时间,最后加上时区标签:
DateTime dateTime = new DateTime();
System.out.println(dateTime.toString("YYYY-MM-ddZ"));
System.out.println(dateTime.toString("HH:mm:ssZ"));
在这种情况下,输出将是:
2014-02-27+0000
15:10:36+0000
几乎就是我需要的东西,但有可能这样吗?
2014-02-27Z
15:10:36Z
答案 0 :(得分:4)
这是一个有效的例子
DateTime dateTime = new DateTime();
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.appendPattern("yyyy-MM-dd")
.appendTimeZoneOffset("Z", false, 2, 2)
.toFormatter();
System.out.println(formatter.print(dateTime.withZone(DateTimeZone
.forID("Zulu"))));
基本上,如果time zone offset为零,则打印Z
。由于Zulu
或UTC
的偏移量为0,因此将打印出来。
答案 1 :(得分:1)
如果您正在尝试使用军事代码(例如Z代表GMT,请参阅:http://www.timeanddate.com/library/abbreviations/timezones/military/z.html),您可以这样:
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.TimeZone;
import java.util.Date;
public class CalendarExample {
static final String MILITARY_OFFSETS = "YXWVUTSRQPONZABCDEFGHIKLM";
static final int MILLIS_IN_HOUR = 1000*60*60;
public static void main(String[] args) {
System.out.println(formatDate(new Date(), "yyyy-MM-dd", "GMT")); // 2014-02-27Z
System.out.println(formatDate(new Date(), "HH:mm:ss", "GMT"));
System.out.println(formatDate(new Date(), "yyyy-MM-dd", "EST"));
System.out.println(formatDate(new Date(), "HH:mm:ss", "EST"));
}
static String formatDate(Date date, String dateTimeFormat, String timezoneCode) {
Calendar calendar = new GregorianCalendar();
TimeZone tz = TimeZone.getTimeZone(timezoneCode);
calendar.setTimeZone(tz);
int offset = calendar.get(Calendar.ZONE_OFFSET)/MILLIS_IN_HOUR;
// System.out.println(timezoneCode + " Offset is " + offset + " hours");
String timeZoneCode = MILITARY_OFFSETS.substring(offset + 12, offset + 13);
SimpleDateFormat dateFmt = new SimpleDateFormat(dateTimeFormat + "'" + timeZoneCode + "'");
return dateFmt.format(date);
}
}
输出:
2014-02-27Z
11:57:44Z
2014-02-27R
11:57:44R
答案 2 :(得分:0)
试试这个
DateTime dateTime = new DateTime();
System.out.println(dateTime.toString("YYYY-MM-dd z");
System.out.println(dateTime.toString("HH:mm:ss z");
使用“z”代替“Z”。