我想在2016-02-14T15:50:39Z格式中转换系统日期和时间。如何实现使用java?
答案 0 :(得分:2)
Instant.now()
.toString()
2018-01-23T01:23:45.678901Z
其他答案使用旧的过时类。
您想要的格式符合ISO 8601标准。
最后的Z
代表Zulu
,表示UTC。
在Java 8及更高版本中,使用内置的java.time框架。
在解析/生成日期时间值的文本表示时,java.time类默认使用ISO 8601格式。
Instant
是UTC时间线上的一个时刻。它的now
方法得到当前时刻。从Java 8 Update 74开始,now
方法以millisecond分辨率获得当前时刻,但未来版本可能达到Instant
的完整nanosecond分辨率。
Instant::toString
方法根据需要生成一个String,根据小数秒的需要使用数字组(0,3,6或9)。
String output = Instant.now().toString(); // Example: 2016-02-14T15:50:39.123Z
如果不关心一小段时间,如问题示例中所示,请拨打with
进行截断,并传递ChronoField.NANO_OF_SECOND
enum。
String output = Instant.now().with( ChronoField.NANO_OF_SECOND , 0 ).toString(); // Example: 2016-02-14T15:50:39Z (no '.123' at end)
更简单的是,调用truncatedTo
方法,传递ChronoUnit.SECONDS
enum。
String output = Instant.now().truncatedTo( ChronoUnit.SECONDS ).toString();
如果要截断整个分钟而不是整个分钟,请参阅this other Question。
答案 1 :(得分:1)
试试这段代码:
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] args)
{
Date dt=new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
String formattedDate = formatter.format(dt);
System.out.println(formattedDate);
}
}
您可以尝试其他几种日期格式here。
答案 2 :(得分:0)
下面使用简单的日期格式示例:
Date curDate = new Date();
SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd");
String DateToStr = format.format(curDate);
System.out.println(DateToStr);
format = new SimpleDateFormat("dd-M-yyyy hh:mm:ss");
DateToStr = format.format(curDate);
System.out.println(DateToStr);
format = new SimpleDateFormat("dd MMMM yyyy zzzz", Locale.ENGLISH);
DateToStr = format.format(curDate);
System.out.println(DateToStr);
format = new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss z");
DateToStr = format.format(curDate);
System.out.println(DateToStr);
try {
Date strToDate = format.parse(DateToStr);
System.out.println(strToDate);
} catch (ParseException e) {
e.printStackTrace();
}
}