如何在Java中将GMT更改为PST格式?

时间:2017-06-02 19:10:03

标签: java

我有一个显示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;
}

由于

2 个答案:

答案 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;
}