我想将Java. util. date对象转换为Java中的字符串。
格式为2010-05-30 22:15:52
我想将Java. util. date对象转换为Java中的字符串。
格式为2010-05-30 22:15:52
当前回答
让我们试试这个
public static void main(String args[]) {
Calendar cal = GregorianCalendar.getInstance();
Date today = cal.getTime();
DateFormat df7 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
String str7 = df7.format(today);
System.out.println("String in yyyy-MM-dd format is: " + str7);
} catch (Exception ex) {
ex.printStackTrace();
}
}
或者效用函数
public String convertDateToString(Date date, String format) {
String dateStr = null;
DateFormat df = new SimpleDateFormat(format);
try {
dateStr = df.format(date);
} catch (Exception ex) {
ex.printStackTrace();
}
return dateStr;
}
从转换日期到字符串在Java
其他回答
博士tl;
myUtilDate.toInstant() // Convert `java.util.Date` to `Instant`.
.atOffset( ZoneOffset.UTC ) // Transform `Instant` to `OffsetDateTime`.
.format( DateTimeFormatter.ISO_LOCAL_DATE_TIME ) // Generate a String.
.replace( "T" , " " ) // Put a SPACE in the middle.
2014-11-14 14:05:09
java.time
现代的方法是用爪哇。时间类现在取代了麻烦的旧遗留日期-时间类。
首先将java.util.Date转换为Instant。Instant类表示UTC时间轴上的一个时刻,其分辨率为纳秒(最多为十进制分数的九(9)位)。
转换到/从java。时间是由添加到旧类中的新方法执行的。
Instant instant = myUtilDate.toInstant();
java.util.Date和java.time.Instant都是UTC。如果您希望将日期和时间视为UTC,那就这样吧。调用toString生成标准ISO 8601格式的字符串。
String output = instant.toString();
2014 - 11 - 14 - t14:05:09z
对于其他格式,需要将Instant转换为更灵活的OffsetDateTime。
OffsetDateTime odt = instant.atOffset( ZoneOffset.UTC );
odt.toString (): 2020 - 05 - 01 - t21:25:35.957z
在IdeOne.com上可以看到代码的实时运行。
要获得所需格式的字符串,请指定DateTimeFormatter。您可以指定自定义格式。但是我将使用一个预定义的格式化器(ISO_LOCAL_DATE_TIME),并将其输出中的T替换为SPACE。
String output = odt.format( DateTimeFormatter.ISO_LOCAL_DATE_TIME )
.replace( "T" , " " );
2014-11-14 14:05:09
顺便说一下,我不推荐这种故意丢失utc偏移量或时区信息的格式。对字符串的日期-时间值的含义产生歧义。
还要注意数据丢失,因为在date-time值的String表示中,任何小数秒都会被忽略(有效地截断)。
要通过某些特定地区的挂钟时间来观察同一时刻,可以应用ZoneId来获得zoneeddatetime。
ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = instant.atZone( z );
zdt toString():蒙特利尔2014-11-14T14:05:09-05:00[美国]
要生成一个格式化的String,执行与上面相同的操作,但将odt替换为zdt。
String output = zdt.format( DateTimeFormatter.ISO_LOCAL_DATE_TIME )
.replace( "T" , " " );
2014-11-14 14:05:09
如果执行这段代码的次数非常多,你可能想要更高效一点,避免调用String::replace。删除该调用还会使代码更短。如果需要,可以在自己的DateTimeFormatter对象中指定自己的格式化模式。将此实例缓存为常量或成员以供重用。
DateTimeFormatter f = DateTimeFormatter.ofPattern( "uuuu-MM-dd HH:mm:ss" ); // Data-loss: Dropping any fractional second.
通过传递实例应用该格式化程序。
String output = zdt.format( f );
关于java.time
java。时间框架内置于Java 8及更高版本中。这些类取代了麻烦的旧日期-时间类,如java.util。Date, . calendar, & java.text.SimpleDateFormat。
Joda-Time项目现在处于维护模式,建议迁移到java.time。
要了解更多,请参阅Oracle教程。搜索Stack Overflow可以找到很多例子和解释。
大部分的java。时间功能在ThreeTen-Backport中向后移植到Java 6和7,并在ThreeTenABP中进一步适应Android(参见如何使用…)
ThreeTen-Extra项目扩展了java。额外的课程时间。这个项目是未来可能添加到java.time的一个试验场。
public static void main(String[] args)
{
Date d = new Date();
SimpleDateFormat form = new SimpleDateFormat("dd-mm-yyyy hh:mm:ss");
System.out.println(form.format(d));
String str = form.format(d); // or if you want to save it in String str
System.out.println(str); // and print after that
}
如果只需要从日期到时间,则可以使用String的特性。
Date test = new Date();
String dayString = test.toString();
String timeString = dayString.substring( 11 , 19 );
这将自动切断字符串的时间部分,并将其保存在timeString中。
让我们试试这个
public static void main(String args[]) {
Calendar cal = GregorianCalendar.getInstance();
Date today = cal.getTime();
DateFormat df7 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
String str7 = df7.format(today);
System.out.println("String in yyyy-MM-dd format is: " + str7);
} catch (Exception ex) {
ex.printStackTrace();
}
}
或者效用函数
public String convertDateToString(Date date, String format) {
String dateStr = null;
DateFormat df = new SimpleDateFormat(format);
try {
dateStr = df.format(date);
} catch (Exception ex) {
ex.printStackTrace();
}
return dateStr;
}
从转换日期到字符串在Java
单线选项
该选项通过简单的一行来编写实际的日期。
请注意,这是使用Calendar.class和SimpleDateFormat,然后它不是 在Java8下使用它是合乎逻辑的。
yourstringdate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().getTime());