如何在java中将当前日期转换为字符串?
Posted
技术标签:
【中文标题】如何在java中将当前日期转换为字符串?【英文标题】:How to convert current date into string in java? 【发布时间】:2011-02-25 22:29:39 【问题描述】:如何在Java中将当前日期转换为字符串?
【问题讨论】:
【参考方案1】:String date = new SimpleDateFormat("dd-MM-yyyy").format(new Date());
【讨论】:
结合了这个和下面的答案作为时间字符串。 C: @Ian Purton 是 UTC tz 中的字符串日期 ..? 仅供参考,这些麻烦的类现在是遗留的,被 java.time 类所取代。见Oracle Tutorial。【参考方案2】:// GET DATE & TIME IN ANY FORMAT
import java.util.Calendar;
import java.text.SimpleDateFormat;
public static final String DATE_FORMAT_NOW = "yyyy-MM-dd HH:mm:ss";
public static String now()
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW);
return sdf.format(cal.getTime());
取自here
【讨论】:
使用日历代替日期的最佳响应。 我很困惑。在哪个宇宙中,Calendar
比 Date
更受欢迎?
仅供参考,这些麻烦的类现在是遗留的,被 java.time 类所取代。见Oracle Tutorial。【参考方案3】:
// On the form: dow mon dd hh:mm:ss zzz yyyy
new Date().toString();
【讨论】:
很抱歉做得过火。 该方法使用的格式很糟糕。此外,您的 KVM 当前默认时区是隐式应用的,因此您的结果会有所不同。这些麻烦的类现在是遗留的,被 java.time 类所取代。见Oracle Tutorial。【参考方案4】:使用DateFormat
实现;例如SimpleDateFormat
.
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
String data = df.format(new Date());
【讨论】:
仅供参考,这些麻烦的类现在是遗留的,被 java.time 类所取代。见Oracle Tutorial。【参考方案5】:tl;博士
LocalDate.now()
.toString()
2017-01-23
最好明确指定所需/预期的时区。
LocalDate.now( ZoneId.of( "America/Montreal" ) )
.toString()
java.time
Java 8 及更高版本的现代方式是使用java.time 框架。
指定时区,因为世界各地的日期在任何给定时刻都会变化。
ZoneId zoneId = ZoneId.of( "America/Montreal" ) ; // Or ZoneOffset.UTC or ZoneId.systemDefault()
LocalDate today = LocalDate.now( zoneId ) ;
String output = today.toString() ;
2017-01-23
默认情况下,您会获得标准ISO 8601 格式的字符串。
对于其他格式,请使用 java.time.format.DateTimeFormatter
类。
关于java.time
java.time 框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧 legacy 日期时间类,例如 java.util.Date
、Calendar
和 SimpleDateFormat
。
Joda-Time 项目现在位于maintenance mode,建议迁移到java.time 类。
要了解更多信息,请参阅Oracle Tutorial。并在 Stack Overflow 上搜索许多示例和解释。规格为JSR 310。
您可以直接与您的数据库交换 java.time 对象。使用符合JDBC 4.2 或更高版本的JDBC driver。不需要字符串,不需要java.sql.*
类。
从哪里获得 java.time 类?
Java SE 8、Java SE 9、Java SE 10 及更高版本 内置。 标准 Java API 的一部分,带有捆绑实现。 Java 9 添加了一些小功能和修复。 Java SE 6 和 Java SE 7 大部分 java.time 功能都在ThreeTen-Backport 中向后移植到 Java 6 和 7。 Android 更高版本的 android 捆绑包实现 java.time 类。 对于早期的 Android (ThreeTenABP 项目适应 ThreeTen-Backport(如上所述)。见How to use ThreeTenABP…。ThreeTen-Extra 项目通过附加类扩展了 java.time。该项目是未来可能添加到 java.time 的试验场。您可以在这里找到一些有用的类,例如Interval
、YearWeek
、YearQuarter
和more。
【讨论】:
【参考方案6】:更快:
String date = FastDateFormat.getInstance("dd-MM-yyyy").format(System.currentTimeMillis( ));
【讨论】:
需要 org.apache.commons【参考方案7】:时间为 YYYY-MM-dd
String time = new DateTime( yourData ).toString("yyyy-MM-dd");
而DateTime的库是:
导入 org.joda.time.DateTime;
【讨论】:
DateTime
来自哪个库? Stack Overflow 上的答案应该有一些解释,因为这个网站不仅仅是一个 sn-p 库。【参考方案8】:
大多数答案是/是有效的。 用于日期处理的新 JAVA API 修改确保减少了 Java 日期处理中一些较早的歧义。
您将收到类似调用已弃用的消息。
new Date() // deprecated
上述调用让开发人员假设一个新的 Date 对象将为 Date 对象提供当前时间戳。这种行为在其他 Java API 类中并不一致。
执行此操作的新方法是使用 日历 实例。
new SimpleDateFormat("yyyy-MM-dd").format(Calendar.getInstance().getTime()
这里的命名约定也不是完美的,但是很有条理。 对于像我这样难以抢劫但如果听起来/看起来合乎逻辑就永远不会忘记某事的人来说,这是一个好方法。
这更像是现实生活的代名词
-
我们得到一个 Calendar 对象并在其中查找时间。
(您一定想知道没有人从日历中获得时间,这就是我说它不完美的原因。但这是一个不同的话题
完全)
然后我们希望日期采用简单的文本格式,因此我们使用 SimpleDateFormat 实用程序类,它可以帮助我们格式化步骤 1 中的日期。我使用 yyyy、MM、dd 作为格式中的参数。 Supported date format parameters
另一种方法是使用 Joda time API
new DateTime().toString("yyyy-MM-dd")
还是很明显的
new DateTime(Calendar.getInstance().getTime()).toString("yyyy-MM-dd")
两者都将返回相同的结果。
【讨论】:
仅供参考,麻烦的旧日期时间类,如java.util.Date
、java.util.Calendar
和 java.text.SimpleTextFormat
现在是 legacy,被 java.time 类取代。此外,Joda-Time 项目现在位于maintenance mode,团队建议迁移到 java.time。
@BasilBourque 这就是我在回答中的意思,投票最多的答案是正确的,但与当今的开发人员无关。最后,java 将有一个 Clock 类,并且 Clock.getTime() 将比 Date 或 DateTime 或 Time 类更明智和模仿现实生活。 Java 开发人员需要知道 OOPS 是从模仿现实生活场景开始的。
仅供参考,Java 8 中的 Clock
实现与遗留类完全相同。只有在 Java 9 中才有了新的实现,能够以纳秒级的分辨率捕获当前时刻。
是的,这就是我写“终于”的原因 Java 将有一个 Clock 类,它将模仿现实生活中的场景(OOPS 概念)并显示/捕获(您更喜欢说的方式)当前时刻。【参考方案9】:
public static Date getDateByString(String dateTime)
if(dateTime==null || dateTime.isEmpty())
return null;
else
String modified = dateTime + ".000+0000";
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
Date dateObj = new Date();
Date dateObj1 = new Date();
try
if (dateTime != null)
dateObj = formatter.parse(modified);
catch (ParseException e)
e.printStackTrace();
return dateObj;
【讨论】:
对这段代码的一些解释可能会有所帮助。 答案与问题无关。不,您不能将任何String
格式的日期传递给您的函数。以上是关于如何在java中将当前日期转换为字符串?的主要内容,如果未能解决你的问题,请参考以下文章
如何在python中将字符串日期转换为日期时间格式? [复制]