我有一个显示GMT时间的代码,我需要在PST中显示它。如何修改以下代码以获得PST时间?
代码
public static final String FORMAT = "MM/dd/yyyy";
public static final String OUTPUT_FORMAT_STD_DATE6 = "MM/dd/yy hh:mm a";
public static final String INPUT_FORMAT_STD_TIMESTAMP = "yyyy-MM-dd HH:mm:ss";
public static String formatDate(String strDate, String inputFormat, String outputFormat) {
Date date = convertStringToDate(strDate,inputFormat);
String displayDateString = formatDate(date, outputFormat);
return displayDateString;
}
formatDate在这里被调用
public void endElement(String uri, String localName, String qName) throws SAXException {
if( EVENT.equalsIgnoreCase( qName ) ) {
auditEntries.add(entry);
} else if( LOG_TIME.equalsIgnoreCase( qName ) ) {
String time = content.toString();
entry.setLogTime( DateUtils.formatDate(time, "yyyy-MM-dd'T'HH:mm:ss", DateUtils.OUTPUT_FORMAT_STD_DATE6));
}
请帮忙,我是编写Java代码的新手。
这就是我的做法。
public static String formatDate(String strDate, String inputFormat, String outputFormat) {
Date date = convertStringToDate(strDate,inputFormat);
DateFormat pstFormat = new SimpleDateFormat( outputFormat );
pstFormat.setTimeZone( TimeZone.getDefault() );
String displayDateString = formatDate(date, outputFormat);
return displayDateString;
}
由于
答案 0 :(得分:0)
拥有Date
对象后,您可以使用SimpleDateFormat将其转换为时间字符串。下面是一个简单的例子。
不推荐使用3个字母的时区ID,因此您应该使用GMT+-hour:minute
格式或@VGR建议的America/Los_Angeles
区域特定字符串
为了与JDK 1.1.x兼容,其他一些三个字母的时区ID(例如" PST"," CTT"," AST")是也支持。但是,它们的使用已被弃用,因为相同的缩写通常用于多个时区(例如," CST"可能是美国和#34;中央标准时间"以及"中国标准时间& #34;),然后Java平台只能识别其中一个。
价:https://docs.oracle.com/javase/7/docs/api/java/util/TimeZone.html
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
public class DateTest {
public static final String OUTPUT_FORMAT_STD_DATE6 = "MM/dd/yy hh:mm a";
public static void main(String[] args) {
Date date = new Date();
String gmtDateStr = dateToTimzoneString(date, "GMT", OUTPUT_FORMAT_STD_DATE6);
System.out.println(gmtDateStr);
//3 Letter String usage is deprecated
String pstDateStr = dateToTimzoneString(date, "PST", OUTPUT_FORMAT_STD_DATE6);
System.out.println(pstDateStr);
//Correct way
pstDateStr = dateToTimzoneString(date, "GMT+5", OUTPUT_FORMAT_STD_DATE6);
System.out.println(pstDateStr);
}
public static String dateToTimzoneString(Date date, String timeZoneStr, String outputFormat){
SimpleDateFormat sd = new SimpleDateFormat(outputFormat);
sd.setTimeZone(TimeZone.getTimeZone(timeZoneStr));
return sd.format(date);
}
}
答案 1 :(得分:0)
这就是我做的。
public static String convertUTC( String strDate, String inputFormat, String outputFormat ) {
String displayDateString = null;
try {
DateFormat inFormat = new SimpleDateFormat( inputFormat );
inFormat.setTimeZone( TimeZone.getTimeZone( "UTC" ) );
Date date = inFormat.parse( strDate );
DateFormat outFormat = new SimpleDateFormat( outputFormat );
outFormat.setTimeZone( TimeZone.getDefault() );
displayDateString = formatDate(date, outputFormat);
} catch ( ParseException pe ) {
pe.printStackTrace();
}
return displayDateString;
}