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

如何在java中将当前日期转换为字符串?,java,string,date,formatting,Java,String,Date,Formatting,如何在Java中将当前日期转换为字符串?使用实现;e、 g // On the form: dow mon dd hh:mm:ss zzz yyyy new Date().toString(); 取自更快: String date = FastDateFormat.getInstance("dd-MM-yyyy").format(System.currentTimeMillis( )); tl;博士 2017-01-23 最好明确指定所需/预期的时区 LocalDate.now( ZoneI

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

使用实现;e、 g

// On the form: dow mon dd hh:mm:ss zzz yyyy
new Date().toString();
取自

更快:

String date = FastDateFormat.getInstance("dd-MM-yyyy").format(System.currentTimeMillis( ));
tl;博士 2017-01-23

最好明确指定所需/预期的时区

LocalDate.now( ZoneId.of( "America/Montreal" ) )
         .toString() 
java.time Java8及更高版本的现代方法是使用框架

指定时区,因为世界各地的日期在任何给定时刻都不同

ZoneId zoneId = ZoneId.of( "America/Montreal" ) ;  // Or ZoneOffset.UTC or ZoneId.systemDefault()
LocalDate today = LocalDate.now( zoneId ) ;
String output = today.toString() ;
2017-01-23

默认情况下,您将获得标准格式的字符串

对于其他格式,请使用
java.time.format.DateTimeFormatter


关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,&

该项目现已启动,建议迁移到类

要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是

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

从哪里获得java.time类

  • 然后
    • 内置的
    • 标准JavaAPI的一部分,带有捆绑实现
    • Java9添加了一些次要功能和修复
    • 大部分java.time功能都在中向后移植到Java6和Java7
    • 更高版本的Android捆绑包实现了java.time类

    • 对于早期的Android(大多数答案都是有效的。 针对日期处理的新JavaAPI修改确保减少了JAVA日期处理中的一些早期模糊性

      对于类似的呼叫,您将收到一条不推荐使用的消息

      new Date() // deprecated
      
      上面的调用让开发人员假设一个新的Date对象将为Date对象提供当前的时间戳。这种行为在其他Java API类中是不一致的

      执行此操作的新方法是使用日历实例

      new SimpleDateFormat("yyyy-MM-dd").format(Calendar.getInstance().getTime()
      
      这里的命名惯例也不完美,但这是非常有组织的。 对于像我这样的人来说,很难把事情弄得乱七八糟,但如果听起来/看起来合乎逻辑,他永远不会忘记,这是一个很好的方法

      这是现实生活的同义词

    • 我们得到一个日历对象,并在其中查找时间。 (你一定想知道,没有人能从日历中获得时间,这就是为什么我说日历并不完美。但这是另一个话题 (总共)
    • 然后我们希望日期采用简单的文本格式,因此我们使用SimpleDataFormat实用程序类,它可以帮助我们格式化步骤1中的日期。我使用yyyy、MM、dd作为格式中的参数
    • 另一种方法是使用Joda时间API

      new DateTime().toString("yyyy-MM-dd")
      
      或者更明显的

      new DateTime(Calendar.getInstance().getTime()).toString("yyyy-MM-dd")
      

      两者都将返回相同的结果。

      时间为YYYY-MM-dd

      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 time = new DateTime( yourData ).toString("yyyy-MM-dd");
      
      DateTime的库是:



      import org.joda.time.DateTime;

      很抱歉实现过度。该方法使用的格式非常糟糕。此外,您的KVM当前默认时区被隐式应用,因此结果会有所不同。这些麻烦的类现在是遗留类,被java.time类取代。请参阅。使用日历而不是日期的最佳响应。我反对融合。在什么样的宇宙中,
      Calendar
      Date
      更可取?仅供参考,这些麻烦的类现在是遗留的,被java.time类所取代。请参见.Requires org.apache.commons将其与下面的timestring.C的答案结合使用:@Ian Purton是UTC tz中的字符串日期。仅供参考,这些麻烦的类现在是遗留类,被java.time类取代。请参见.FYI,诸如,
      java.util.Calendar
      、和
      java.text.SimpleTextFormat
      等麻烦的旧日期时间类现在被这些类取代。此外,项目现在已经开始,团队建议迁移到java.time。@BasilBourque这就是我在answ中的意思呃,得票最多的答案是正确的,但与当今的开发人员无关。最后,java将有一个时钟类和Clock.getTime()与Date或DateTime或Time类相比,模仿会更加明智和真实。Java开发人员需要知道,OOPS最初是模仿真实场景的。仅供参考,Java 8中的
      时钟
      实现与遗留类完全相同。只有Java 9中出现了新的实现,能够捕获是的,这就是我写“finally”的原因,Java将有一个时钟类,它将模拟现实生活场景(OOPS概念)和显示/捕获(你更喜欢这样说)当前时刻。对这段代码的一些解释可能会有帮助。答案与问题无关。不,你不能以任何
      字符串
      格式将日期传递给函数。而
      DateTime
      来自哪个库?关于堆栈溢出的回答应该有一些解释,因为本网站就是这样做的不仅仅是一个snippet library.FYI,这些麻烦的类现在是遗留类,被java.time类取代。请参阅。
      new DateTime().toString("yyyy-MM-dd")
      
      new DateTime(Calendar.getInstance().getTime()).toString("yyyy-MM-dd")
      
      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 time = new DateTime( yourData ).toString("yyyy-MM-dd");