在VB.Net中,与Now.ToString(“yyyy-MM-dd”)等价的较短Java代码是什么?

在VB.Net中,与Now.ToString(“yyyy-MM-dd”)等价的较短Java代码是什么?,java,vb.net,date,migration,date-formatting,Java,Vb.net,Date,Migration,Date Formatting,我正在将一个VB.Net程序转换为Java,我必须转换以下代码行 Dim s = Now.ToString("yyyy-MM-dd") 我已经编写了以下Java代码 Date d = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String s = sdf.format(d); 我可以写在一行上 String s = new SimpleDateFormat("yyyy-MM-dd").form

我正在将一个VB.Net程序转换为Java,我必须转换以下代码行

Dim s = Now.ToString("yyyy-MM-dd")
我已经编写了以下Java代码

Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String s = sdf.format(d);
我可以写在一行上

String s = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
在Java 6和更高版本中工作的较短的代码是什么


是否有一些Java代码在调用日期对象的方法时生成日期格式的字符串(例如:
date.format(“yyyy-MM-dd”)

从Java 8开始,有
Java.time
和几个有用的类

如果您可以使用Java 8或更高版本,则可以执行以下操作:

String now = LocalDate.now().format(DateTimeFormatter.ISO_LOCAL_DATE);
今天在我的时区(可能与您的时区不同)将输出
2018-12-05

你只需要

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
为了让它工作。 您还可以使用应用自定义格式

DateTimeFormatter customFormatter = new DateTimeFormatter.ofPattern("yyyy-MM-dd");
String now = LocalDate.now().format(customFormatter);
在Java 6和更高版本中工作的较短的Java代码是什么? 我想回答“Java6及更高版本”部分:deHaar答案中的代码确实如此。我的版本是

    String now = LocalDate.now(ZoneId.systemDefault()).toString();

  • 在Java8和更高版本以及更新的Android设备(API级别26)中,内置了现代API Java.time
  • 在Java6和Java7中,获取三个后端口,即新类的后端口(三个用于JSR310;请参阅底部的链接)
  • 在(较旧的)Android上使用Android版本的ThreeTen Backport。它叫ThreeTenABP。并确保从带有子包的
    org.threeten.bp
    导入日期和时间类
链接
  • 解释如何使用
    java.time
  • ,其中首先描述了
    java.time
  • ,java.time的后端口到Java6和Java7(JSR-310为三十)
  • ,Android版Three Ten Backport
  • ,解释得非常透彻

创建日期格式对象的成本很高。这样你就有机会重新使用它。但是要小心,这不是线程安全的。也许这就回答了为什么没有更短的替代方案的问题。我建议您避免使用
SimpleDateFormat
类。它不仅早已过时,而且还出了名的麻烦。今天,我们有了更好的代码。不要追求短代码。相反,要争取清晰易读的代码。有时它们恰好相同,有时较短的代码可读性较差。
String s=Now.ToString(“yyyy-MM-dd”)
,这不是vb…是的,它不是vb。我会更正的。对于第一个代码片段,您也可以只使用
LocalDate.now().toString()
。我建议为
now
指定明确的时区,即使您只是执行
LocalDate.now(ZoneId.systemDefault())
。它更清楚地说明了你期望得到什么。我想投赞成票,但我没有足够的声誉!谢谢你的回答。你可以接受它作为正确的答案。。。如果你不能投赞成票,那没问题,我记得几个月前就遇到过这种情况;-)我已经接受了它,但它被拒绝,直到我有15个声誉!对不起,没问题,您可以投票和/或接受@OleV.V给出的答案。等你有足够的声誉时再告诉我。我想投赞成票,但我没有足够的声誉!感谢您对任何Java版本的回答。
    DateTimeFormatter customFormatter = new DateTimeFormatter.ofPattern("uuuu-MM-dd");
    String now = LocalDate.now(ZoneId.systemDefault()).format(customFormatter);