时间转换为时间戳

时间:2013-07-04 13:17:20

标签: java datetime timestamp-with-timezone

我有登录时间格式

  

31 / Mar / 2013: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();
}

如何使用此时区?

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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

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