3

我使用以下代码将字符串转换为日期,但它在转换时应用了设备的时区。
我不需要这个,但我想从那个字符串中获得相同的日期/时间,比如

String = "2009-07-31 07:59:17.427"
Date = 2009-07-31 07:59:17.427

Date formatter = new Date(HttpDateParser.parse("2009-07-31 07:59:17.427"));
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
String strCustomDateTime = dateFormat.format(formatter);
4

2 回答 2

6

您可以考虑到解析后获得的默认时区偏移量:

public static String StringToDate(String dateToParse) {

    Date formatter = new Date(HttpDateParser.parse(dateToParse));
    SimpleDateFormat dateFormat = new SimpleDateFormat(
            "yyyy-MM-dd HH:mm:ss.SSS");
    int offset = TimeZone.getDefault().getRawOffset();
    formatter.setTime(formatter.getTime() + offset);
    String strCustomDateTime = dateFormat.format(formatter);
    return strCustomDateTime;
}
于 2009-07-31T10:26:47.177 回答
1

究竟是什么问题?您正在尝试将“2009-07-31 07:59:17.427”转换为时间点,但是,这并没有指定唯一的时间点——没有时区。所以你确实需要一个时区,图书馆有必要选择一个,平台的当前时区。

如果问题是您希望指定不同的时区,请调用 DateFormat.setTimeZone():

format.setTimeZone(TimeZone.getTimeZone("your time zone"));
于 2009-07-31T08:51:04.937 回答