0

我有一个登录时间格式

2013 年 3 月 31 日:17:03:30 -0700

我想将其转换为时区中的时间戳-70。我怎样才能做到这一点?

try {
    String time = myMap.get("timestamp");
    String splitTime[] = time.split("-");//input Timestamp 31/Mar/2013:17:03:30 -0700
    Date date = new SimpleDateFormat("dd/MMM/yyyy:HH:mm:ss").parse(splitTime[0]);
    myMap.put("timestamp", String.valueOf(new Long(date.getTime() / 1000)));
} catch (ParseException e) {
     e.printStackTrace();
}

我如何使用这个时区?

4

2 回答 2

5

尝试这个

Date date = new SimpleDateFormat("dd/MMM/yyyy:HH:mm:ss Z").parse(s);

请注意,如果您的默认语言是英语,它只会解析/Mar/,否则使用

Date date = new SimpleDateFormat("dd/MMM/yyyy:HH:mm:ss Z", Locale.US).parse(s);
于 2013-07-04T13:22:37.530 回答
1

好吧,您可以使用该时区信息在您的日期中减去/添加那么多时间:

String time = myMap.get("timestamp");
String splitTime[] = time.split("-");//input Timestamp 31/Mar/2013:17:03:30 -0700
Date date = new SimpleDateFormat("dd/MMM/yyyy:HH:mm:ss").parse(splitTime[0]);

long timestamp = date.getTime() / 1000;  ///datetime in seconds

long timezonehour = Long.parseLong(splitTime[1].substring(0,1));   // 07
long timezoneminutes = Long.parseLong(splitTime[1].substring(2,3));  // 00

timezonehour +=  timezoneminutes/60;

long timezone_seconds = (timezonehour/60)/60;   // in seconds

timestamp += timezone_seconds // final computed value

我知道这看起来很难看,但无法进一步帮助。

于 2013-07-04T13:24:44.687 回答