【问题标题】:How to convert current date into string in java?如何在java中将当前日期转换为字符串?
【发布时间】:2011-02-25 22:29:39
【问题描述】:

如何在Java中将当前日期转换为字符串?

【问题讨论】:

    标签: java string date formatting


    【解决方案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

    【讨论】:

    • 使用日历代替日期的最佳响应。
    • 我很困惑。在哪个宇宙中,CalendarDate 更受欢迎?
    • 仅供参考,这些麻烦的类现在是遗留的,被 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.DateCalendarSimpleDateFormat

    Joda-Time 项目现在位于maintenance mode,建议迁移到java.time 类。

    要了解更多信息,请参阅Oracle Tutorial。并在 Stack Overflow 上搜索许多示例和解释。规格为JSR 310

    您可以直接与您的数据库交换 java.time 对象。使用符合JDBC 4.2 或更高版本的JDBC driver。不需要字符串,不需要java.sql.* 类。

    从哪里获得 java.time 类?

    ThreeTen-Extra 项目通过附加类扩展了 java.time。该项目是未来可能添加到 java.time 的试验场。您可以在这里找到一些有用的类,例如IntervalYearWeekYearQuartermore

    【讨论】:

      【解决方案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()
      

      这里的命名约定也不是完美的,但是很有条理。 对于像我这样难以抢劫但如果听起来/看起来合乎逻辑就永远不会忘记某事的人来说,这是一个好方法。

      这更像是现实生活的代名词

      1. 我们得到一个 Calendar 对象并在其中查找时间。 (您一定想知道没有人从日历中获得时间,这就是我说它不完美的原因。但这是一个不同的话题 完全)
      2. 然后我们希望日期采用简单的文本格式,因此我们使用 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.Datejava.util.Calendarjava.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 格式的日期传递给您的函数。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-14
      • 2015-11-24
      • 2012-10-07
      相关资源
      最近更新 更多