Convert java.util.Date to String
我想在Java中将
格式为
使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | String pattern ="MM/dd/yyyy HH:mm:ss"; // Create an instance of SimpleDateFormat used for formatting // the string representation of date according to the chosen pattern DateFormat df = new SimpleDateFormat(pattern); // Get the today date using Calendar object. Date today = Calendar.getInstance().getTime(); // Using DateFormat format method we can create a string // representation of a date with the defined format. String todayAsString = df.format(today); // Print the result! System.out.println("Today is:" + todayAsString); |
来自http://www.kodejava.org/examples/86.html
1 2 |
Commons-lang DateFormatUtils充满了好东西(如果你的类路径中有公共语言)
1 2 | //Formats a date/time into a specific pattern DateFormatUtils.format(yourDate,"yyyy-MM-dd HH:mm:SS"); |
TL;博士
1 2 3 4 | 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.time类,它们现在取代了麻烦的旧遗留日期时间类。
首先将
来自/来自java.time的转换是通过添加到旧类的新方法来执行的。
1 | Instant instant = myUtilDate.toInstant(); |
1 |
2014-11-14T14:05:09Z
对于其他格式,您需要将
1 | OffsetDateTime odt = instant.atOffset( ZoneOffset.UTC ); |
odt.toString(): 2014-11-14T14:05:09+00:00
要获得所需格式的String,请指定
1 2 |
2014-11-14 14:05:09
顺便说一句,我不推荐这种格式,你故意丢失从UTC或时区的偏移信息。创建关于该字符串的日期时间值的含义的歧义。
还要注意数据丢失,因为在String的日期时间值表示中忽略(有效截断)任何小数秒。
要通过某个特定区域的挂钟时间镜头看到相同的时刻,应用
1 2 | ZoneId z = ZoneId.of("America/Montreal" ); ZonedDateTime zdt = instant.atZone( z ); |
zdt.toString(): 2014-11-14T14:05:09-05:00[America/Montreal]
要生成格式化的String,请执行与上面相同的操作,但将
1 2 |
2014-11-14 14:05:09
如果执行此代码的次数非常多,您可能希望提高效率并避免调用
1 | DateTimeFormatter f = DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss" ); // Data-loss: Dropping any fractional second. |
通过传递实例来应用该格式化程序。
1 |
关于java.time
java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧日期时间类,例如
现在处于维护模式的Joda-Time项目建议迁移到java.time。
要了解更多信息,请参阅Oracle教程。并搜索Stack Overflow以获取许多示例和解释。
许多java.time功能都被反向移植到Java 6& 7在ThreeTen-Backport中,并在ThreeTenABP中进一步适应Android(请参阅如何使用...)。
ThreeTen-Extra项目使用其他类扩展了java.time。该项目是未来可能添加到java.time的试验场。
普通java中的单行代码:
1 2 3 4 5 6 7 |
这使用Formatter和相对索引而不是
稍微多一点重复但只需要一个陈述。
在某些情况下这可能很方便。
你为什么不用Joda(org.joda.time.DateTime)?
它基本上是一个单行。
1 2 3 4 | Date currentDate = GregorianCalendar.getInstance().getTime(); String output = new DateTime( currentDate ).toString("yyyy-MM-dd HH:mm:ss"); // output: 2014-11-14 14:05:09 |
看起来你正在寻找SimpleDateFormat。
格式:yyyy-MM-dd kk:mm:ss
单发;)
获取日期
1 |
获得时间
1 |
获取日期和时间
1 | String dateTime = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss", Locale.getDefaut()).format(new Date()); |
快乐编码:)
1 2 3 4 5 6 7 8 9 10 11 12 13 | public static String formateDate(String dateString) { Date date; String formattedDate =""; try { date = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss",Locale.getDefault()).parse(dateString); formattedDate = new SimpleDateFormat("dd/MM/yyyy",Locale.getDefault()).format(date); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } return formattedDate; } |
如果您只需要从该日期开始的时间,则可以使用String的功能。
1 2 3 |
这将自动剪切String的时间部分并将其保存在
以下是使用新的Java 8 Time API格式化旧版
1 2 3 4 5 6 7 8 9 10 11 12 13 | DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSS Z") .withZone(ZoneOffset.UTC); String utcFormatted = formatter.format(date.toInstant()); ZonedDateTime utcDatetime = date.toInstant().atZone(ZoneOffset.UTC); String utcFormatted2 = utcDatetime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSS Z")); // gives the same as above ZonedDateTime localDatetime = date.toInstant().atZone(ZoneId.systemDefault()); String localFormatted = localDatetime.format(DateTimeFormatter.ISO_ZONED_DATE_TIME); // 2011-12-03T10:15:30+01:00[Europe/Paris] String nowFormatted = LocalDateTime.now().toString(); // 2007-12-03T10:15:30.123 |
预定义的fomatters列表和模式符号参考。
积分:
如何使用LocalDateTime解析/格式化日期? (Java 8)
Java8 java.util.Date转换为java.time.ZonedDateTime
格式化即时字符串
java 8 ZonedDateTime和OffsetDateTime之间有什么区别?
最简单的使用方法如下:
1 |
其中"yyyy-MM-dd'T'HH:mm:ss"是阅读日期的格式
输出:Sun Apr 14 16:11:48 EEST 2013
注:HH vs hh
- HH指的是24小时时间格式
- hh指12h时间格式
试试这个,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | import java.text.ParseException; import java.text.SimpleDateFormat; public class Date { public static void main(String[] args) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String strDate ="2013-05-14 17:07:21"; try { java.util.Date dt = sdf.parse(strDate); System.out.println(sdf.format(dt)); } catch (ParseException pe) { pe.printStackTrace(); } } } |
输出:
1 | 2013-05-14 17:07:21 |
有关java中日期和时间格式的更多信息,请参阅下面的链接
Oracle帮助中心
java中的日期时间示例
1 2 3 4 5 6 7 8 | 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 } |
我们来试试吧
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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(); } } |
或者是效用函数
1 2 3 4 5 6 7 8 9 10 11 | 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中的转换日期到字符串
1 2 3 4 | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String date ="2010-05-30 22:15:52"; java.util.Date formatedDate = sdf.parse(date); // returns a String when it is parsed System.out.println(sdf.format(formatedDate)); // the use of format function returns a String |
OneLine选项
此选项可以轻松地单行写入实际日期。
Please, note that this is using
Calendar.class andSimpleDateFormat , and then it's not
logical to use it under Java8.
1 | yourstringdate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().getTime()); |