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