首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将时间戳从yyyy-MM-ddThh:mm:ss:SSSZ格式转换为MM/dd/yyyy hh:mm:ss.SSS格式?从ISO8601到协调世界时

如何将时间戳从yyyy-MM-ddThh:mm:ss:SSSZ格式转换为MM/dd/yyyy hh:mm:ss.SSS格式?从ISO8601到协调世界时
EN

Stack Overflow用户
提问于 2011-03-22 23:44:00
回答 6查看 112.1K关注 0票数 26

我想将时间戳2011-03-10T11:54:30.207Z转换为10/03/2011 11:54:30.207。我该怎么做呢?我想要将ISO8601格式转换为UTC,然后该UTC应该是位置感知的。请帮帮忙

代码语言:javascript
复制
String str_date="2011-03-10T11:54:30.207Z";
DateFormat formatter ;
Date date ;
formatter = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss.SSS");
date = (Date)formatter.parse(str_date);
System.out.println("output: " +date );

异常:java.text.ParseException:无法解析的日期:"2011-03-10T11:54:30.207Z“

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-03-23 02:25:33

首先,你需要意识到UTC不是一种格式,它实际上是一个时区。所以“从ISO8601转换到UTC”并不是一个真正有意义的概念。

但是,这里有一个使用Joda Time的示例程序,它将文本解析为DateTime,然后格式化它。我已经猜到了你可能想要使用的格式--你没有真正提供足够的信息来说明你想要做什么,以表达更多。你可能还想考虑时区...是否要显示指定时刻的本地时间?如果是这样,您将需要计算出用户的时区并进行适当的转换。

代码语言:javascript
复制
import org.joda.time.*;
import org.joda.time.format.*;

public class Test {
    public static void main(String[] args) {
        String text = "2011-03-10T11:54:30.207Z";
        DateTimeFormatter parser = ISODateTimeFormat.dateTime();
        DateTime dt = parser.parseDateTime(text);

        DateTimeFormatter formatter = DateTimeFormat.mediumDateTime();
        System.out.println(formatter.print(dt));
    }
}
票数 31
EN

Stack Overflow用户

发布于 2011-03-23 20:18:12

是。您可以像这样使用SimpleDateFormat。

代码语言:javascript
复制
SimpleDateFormat formatter, FORMATTER;
formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
String oldDate = "2011-03-10T11:54:30.207Z";
Date date = formatter.parse(oldDate.substring(0, 24));
FORMATTER = new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss.SSS");
System.out.println("OldDate-->"+oldDate);
System.out.println("NewDate-->"+FORMATTER.format(date));

输出旧日期-->2011-03-10T11:54:30.207Z新日期-->10-Mar-2011 11:54:30.207

票数 31
EN

Stack Overflow用户

发布于 2011-03-22 23:49:22

将原始日期输入a Date object,然后用a DateFormat将结果打印出来。如果the automatic parse method不接受您的格式,则可能需要将字符串拆分成更小的部分来创建初始Date对象。

伪码:

代码语言:javascript
复制
Date inputDate = convertYourInputIntoADateInWhateverWayYouPrefer(inputString);
DateFormat outputFormat = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss.SSS");
String outputString = outputFormat.format(inputDate);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5393847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档