Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中如何从日期时间中获取日期_Java_Datetime Format - Fatal编程技术网

java中如何从日期时间中获取日期

java中如何从日期时间中获取日期,java,datetime-format,Java,Datetime Format,这是我的日期字符串 String dd = "Nov-08-2019 07:00:28.190 UTC(+0000)"; 我只想获取“yyyy-MM-dd”格式的日期。 我如何用这种格式获取日期。 我尝试了下面的代码,但它不起作用 String dd = "Nov-08-2019 07:00:28.190 UTC(+0000)"; Date date = null; try { date = new SimpleDateFormat

这是我的日期字符串

String dd = "Nov-08-2019 07:00:28.190 UTC(+0000)";
我只想获取“yyyy-MM-dd”格式的日期。 我如何用这种格式获取日期。 我尝试了下面的代码,但它不起作用

String dd = "Nov-08-2019 07:00:28.190 UTC(+0000)";

          Date date = null;
        try {
            date = new SimpleDateFormat("MM-dd-yyyy HH:mm:ss Z").parse(dd);
        } catch (ParseException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
          String newstr = new SimpleDateFormat("yyyy-MM-dd").format(date);
           System.out.println("\n"+newstr+"\n");

SimpleDataFormatter类构造函数中提供的模式应与提供的输出相匹配。 e、 g.由于您提供的月份为三个字母,因此在模式中使用3个M

String dd = "Nov-08-2019 07:00:28";

    Date date = null;
  try {
      date = new SimpleDateFormat("MMM-dd-yyyy HH:mm:ss").parse(dd);
  } catch (ParseException e1) {
      // TODO Auto-generated catch block
      e1.printStackTrace();
  }
    String newstr = new SimpleDateFormat("yyyy-MM-dd").format(date);
     System.out.println("\n"+newstr+"\n");
}

SimpleDataFormatter类构造函数中提供的模式应与提供的输出相匹配。 e、 g.由于您提供的月份为三个字母,因此在模式中使用3个M

String dd = "Nov-08-2019 07:00:28";

    Date date = null;
  try {
      date = new SimpleDateFormat("MMM-dd-yyyy HH:mm:ss").parse(dd);
  } catch (ParseException e1) {
      // TODO Auto-generated catch block
      e1.printStackTrace();
  }
    String newstr = new SimpleDateFormat("yyyy-MM-dd").format(date);
     System.out.println("\n"+newstr+"\n");
}
这可能对你有帮助

这可能会对您有所帮助。

您的输入字符串是

 String dd = "Nov-08-2019 07:00:28.190 UTC(+0000)";
你想要的是什么

yyyy-MM-dd
首先,您不可能获得yyyy MMM dd,因为代码将

String dd = "Nov-08-2019 07:00:28.190 UTC(+0000)";

          Date date = null;
        try {
            date = new SimpleDateFormat("MMM-dd-yyyy HH:mm:ss Z").parse(dd);
        } catch (ParseException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
          String newstr = new SimpleDateFormat("yyyy-MM-dd").format(date);
           System.out.println("\n"+newstr+"\n");
您的输入字符串是

 String dd = "Nov-08-2019 07:00:28.190 UTC(+0000)";
你想要的是什么

yyyy-MM-dd
首先,您不可能获得yyyy MMM dd,因为代码将

String dd = "Nov-08-2019 07:00:28.190 UTC(+0000)";

          Date date = null;
        try {
            date = new SimpleDateFormat("MMM-dd-yyyy HH:mm:ss Z").parse(dd);
        } catch (ParseException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
          String newstr = new SimpleDateFormat("yyyy-MM-dd").format(date);
           System.out.println("\n"+newstr+"\n");
“Nov”被称为“MMM”格式,因此它将抛出异常。 请尝试以下代码:

“Nov”被称为“MMM”格式,因此它将抛出异常。 请尝试以下代码:

java.time 使用java.time,即现代java日期和时间API,当您知道如何:

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern(
            "MMM-dd-uuuu HH:mm:ss.SSS zzz(xx)", Locale.ROOT);
    String dd = "Nov-08-2019 07:00:28.190 UTC(+0000)";
    LocalDate date = LocalDate.parse(dd, formatter);
    System.out.println(date);
输出为:

2019-11-08

正如我们所看到的,您的字符串是UTC格式的。我假设您也希望您的日期为UTC。如果没有,我们需要解析成一个
ZonedDateTime
,转换成所需的区域,然后格式化成只包含日期的所需输出格式

我假设
UTC(+0000)
是一个时区缩写,后面是括号中的偏移量

您尝试使用的日期和时间类,
date
SimpleDateFormat
,设计得很差,而且很早就过时了,后者尤其令人讨厌。你不应该使用它们。使用java.time是非常困难的

你的代码出了什么问题?
  • MM
    表示两位数的月数,例如11月份为11,8月份为08。对于月缩写,如
    Nov
    ,您需要
    MMM
  • Z
    表示偏移量,如
    +0000
    。虽然这确实出现在字符串中,但文本
    UTC
    在其前面。编辑:混淆地
    SimpleDataFormat
    UTC
    解析为时区,然后忽略字符串的其余部分。就我而言,我不想依赖这种行为
  • 我建议您在格式化程序中指定一个区域设置,以控制字符串中所需的语言。使用月缩写的
    MMM
    时,如果您使用默认的区域设置,并且恰好是威尔士语,那么您的格式化程序将在11月份使用
    Tach
链接
  • 解释如何使用java.time
  • 相关问题:
java.time 使用java.time,即现代java日期和时间API,当您知道如何:

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern(
            "MMM-dd-uuuu HH:mm:ss.SSS zzz(xx)", Locale.ROOT);
    String dd = "Nov-08-2019 07:00:28.190 UTC(+0000)";
    LocalDate date = LocalDate.parse(dd, formatter);
    System.out.println(date);
输出为:

2019-11-08

正如我们所看到的,您的字符串是UTC格式的。我假设您也希望您的日期为UTC。如果没有,我们需要解析成一个
ZonedDateTime
,转换成所需的区域,然后格式化成只包含日期的所需输出格式

我假设
UTC(+0000)
是一个时区缩写,后面是括号中的偏移量

您尝试使用的日期和时间类,
date
SimpleDateFormat
,设计得很差,而且很早就过时了,后者尤其令人讨厌。你不应该使用它们。使用java.time是非常困难的

你的代码出了什么问题?
  • MM
    表示两位数的月数,例如11月份为11,8月份为08。对于月缩写,如
    Nov
    ,您需要
    MMM
  • Z
    表示偏移量,如
    +0000
    。虽然这确实出现在字符串中,但文本
    UTC
    在其前面。编辑:混淆地
    SimpleDataFormat
    UTC
    解析为时区,然后忽略字符串的其余部分。就我而言,我不想依赖这种行为
  • 我建议您在格式化程序中指定一个区域设置,以控制字符串中所需的语言。使用月缩写的
    MMM
    时,如果您使用默认的区域设置,并且恰好是威尔士语,那么您的格式化程序将在11月份使用
    Tach
链接
  • 解释如何使用java.time
  • 相关问题:

不要使用传统的
SimpleDateFormat
Date
类,使用java-8现代日期时间API类,首先使用输入格式Date创建
DateTimeFormatter

String dd = "Nov-08-2019 07:00:28.190 UTC(+0000)";

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMM-dd-uuuu HH:mm:ss.SSS zzz(Z)");
然后使用
OffsetDateTime
使用特定偏移量(在您的情况下为UTC)对其进行解析

然后获取
LocalDate

    System.out.println(dateTime.toLocalDate());

不要使用传统的
SimpleDataFormat
Date
类,使用java-8现代日期时间API类,首先使用输入格式Date创建
DateTimeFormatter

String dd = "Nov-08-2019 07:00:28.190 UTC(+0000)";

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMM-dd-uuuu HH:mm:ss.SSS zzz(Z)");
然后使用
OffsetDateTime
使用特定偏移量(在您的情况下为UTC)对其进行解析

然后获取
LocalDate

    System.out.println(dateTime.toLocalDate());

字符串为
2019年11月8日07:00:28.190 UTC(+0000)
字符串为
2019年11月8日07:00:28.190 UTC(+0000)
我建议您不要使用
SimpleDataFormat
日期。这些类设计得很糟糕,而且早已过时,其中前者尤其令人讨厌。而是使用来自的
ZonedDateTime
DateTimeFormatter
。我建议您不要使用
SimpleDateFormat
Date
。这些类设计得很糟糕,而且早已过时,其中前者尤其令人讨厌。请改用
ZonedDateTime
DateTimeFormatter
,两者都来自@Deadpool谢谢,这取决于
UTC(+0000)
的含义。我(显然和你一样)认为这是一个问题