Timestamp UTC时间戳需要保存在java变量中

Timestamp UTC时间戳需要保存在java变量中,timestamp,utc,Timestamp,Utc,在成功发送电子邮件后,SMTP2GO以URL格式响应,其时间元素为time=2018-08-30T09%3A22%3A31Z。 我需要在java变量中保存时间,如2018-08-30 09:22 我怎样才能做到这一点;任何帮助都将不胜感激 如果时间是一个字符串,您可以: String[] timeparts = time.split("T"); String[] timeparts2 = timeparts[1].split("%3A"); String result = timeparts[

在成功发送电子邮件后,SMTP2GO以URL格式响应,其时间元素为
time=2018-08-30T09%3A22%3A31Z
。 我需要在java变量中保存时间,如2018-08-30 09:22
我怎样才能做到这一点;任何帮助都将不胜感激

如果时间是一个字符串,您可以:

String[] timeparts = time.split("T");
String[] timeparts2 = timeparts[1].split("%3A");

String result = timeparts[0] + " " + timeparts2[0] + ":" + timeparts2[1];
然而,这不是一个很好的方法

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm");
    String urlParam = "time=2018-08-30T09%3A22%3A31Z";
    String[] splitParam = urlParam.split("=");
    if (splitParam.length == 2 && splitParam[0].equals("time")) {
        String incomingTimeString = URLDecoder.decode(splitParam[1], StandardCharsets.UTF_8);
        OffsetDateTime time = OffsetDateTime.parse(incomingTimeString);
        String timeStringForDisplay = time.format(formatter);
        System.out.println(timeStringForDisplay);
    }
上述代码段的输出是所需的:

2018-08-30 09:22

请注意,时间以UTC为单位。您可能希望将其转换为用户的时区,或者至少打印带有时间的偏移量

最好的方法是使用
urldecker
%3A
从编码字符串解码为冒号,并使用适当的日期时间类保存日期和时间,如
OffsetDateTime
Instant
(注释中提出的
Timestamp
类是一个糟糕的选择;它早已过时,仅用于存储和检索SQL数据库中的时间戳值)。您的时间字符串采用ISO 8601格式,
OffsetDateTime
Instant
和其他现代日期时间类默认解析的格式。这意味着我们不必指定格式


链接:解释如何使用
java.time

谢谢@TomBombadil,但我已经有时间将其转换为可读格式。我会使用字符串操作,但这可能不是最简单的方法。你用哪种类型的时间?它是字符串吗?它是通过form param编码的形式出现的。我正在使用它一串。