我想将时间戳2011-03-10T11:54:30.207Z转换为10/03/2011 11:54:30.207。我该怎么做呢?我想要将ISO8601格式转换为UTC,然后该UTC应该是位置感知的。请帮帮忙
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“
发布于 2011-03-23 02:25:33
首先,你需要意识到UTC不是一种格式,它实际上是一个时区。所以“从ISO8601转换到UTC”并不是一个真正有意义的概念。
但是,这里有一个使用Joda Time的示例程序,它将文本解析为DateTime,然后格式化它。我已经猜到了你可能想要使用的格式--你没有真正提供足够的信息来说明你想要做什么,以表达更多。你可能还想考虑时区...是否要显示指定时刻的本地时间?如果是这样,您将需要计算出用户的时区并进行适当的转换。
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));
}
}发布于 2011-03-23 20:18:12
是。您可以像这样使用SimpleDateFormat。
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
发布于 2011-03-22 23:49:22
将原始日期输入a Date object,然后用a DateFormat将结果打印出来。如果the automatic parse method不接受您的格式,则可能需要将字符串拆分成更小的部分来创建初始Date对象。
伪码:
Date inputDate = convertYourInputIntoADateInWhateverWayYouPrefer(inputString);
DateFormat outputFormat = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss.SSS");
String outputString = outputFormat.format(inputDate);https://stackoverflow.com/questions/5393847
复制相似问题