我试图将字符串日期解析为特定的日期格式,但当我使用simpledateformat
中的可用选项时,总是得到不同的结果。这是我试图解析的字符串:
String datetToParse = ""2019-07-04 00:32:08:627158"" into 04-JUL-19 12.32.08.627158000 AM.
我可以使用simpledateformat或任何其他日期格式化程序来实现这一点吗?任何帮助都将得到高度赞赏。
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateFormat {
public static void main(String[] args) {
String date = "2019-07-04 00:32:08:627158";
SimpleDateFormat sf = new SimpleDateFormat("yymmdd");
Date d = null;
try {
d= sf.parse(date);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(d);
}
}
您应该在java.time
和java.util.date
包中使用新的datimeformatter
和localdatetime
而不是长期不推荐使用的simpledateformat
和java.time.format
。如果没有其他原因,只有simpledateformat
没有提供纳秒级分辨率(而您的输入似乎有纳秒级)。
比如,
String date = "2019-07-04 00:32:08:627158";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(
"yyyy-MM-dd HH:m:ss:nnnnnn");
LocalDateTime ldt = LocalDateTime.parse(date, formatter);
DateTimeFormatter outFormatter = DateTimeFormatter.ofPattern(
"dd-MMM-yy hh.mm.ss.nnnnnn a");
System.out.println(outFormatter.format(ldt));
产出
04-Jul-19 12.32.08.627158 AM
DateTimeFormatter outFormatter = DateTimeFormatter.ofPattern(
"dd-MMM-yy hh.mm.ss.nnnnnn000 a");
System.out.println(outFormatter.format(ldt).toUpperCase());
04-JUL-19 12.32.08.627158000 AM
不清楚这三个零是从哪里来的,如果你想要更精确的话,我会用的
DateTimeFormatter outFormatter = DateTimeFormatter.ofPattern(
"dd-MMM-yy hh.mm.ss.nnnnnnnnn a");
System.out.println(outFormatter.format(ldt).toUpperCase());
但这会产生(正如我所预料的)
04-JUL-19 12.32.08.000627158 AM
下面是SimpleDateFormat的设置。 下面是开发人员文档中可解析日期字符串的可能差异列表。正如您所看到的,它们中没有一个在时区中有冒号。 我的第二个问题是当我得到一个时区设置为Z的日期字符串时,这是将时区设置为GMT的标准,相当于0000。然而,我又得到了一个ParseException。下面是日期字符串的一个示例。 提前致谢
(我想)快速提问。如何将解析为(将时间设置为)? java.time.format.DateTimeParseException:无法分析文本“2007-07-21+00:00”:无法从TemporalAccessor获取OffsetDateTime:{offsetseconds=0},ISO解析为类型java.time.format.Parsed的2007-07-21
我在S3中有一个日期,我用它创建了一个雅典娜表。我在S3中有一些json格式的日期条目,在运行查询时,Athena不接受这些条目作为日期或时间戳。 AWS Glue将这两个字段都作为字符串,并且当将它们分别更改为timestamp和date时,围绕timestamp的查询将不起作用,从而在timestamp字段上提供ValidationError。 无论如何,我找到了一种使用prestodb da
问题内容: 将日期转换为其他格式的字符串时遇到问题。日期: 我想将此格式转换为另一种格式:。 当我尝试将其转换时,使用以下方法会得到不同的结果: 我得到了错误的结果,该月已替换为分钟: 问题答案: 这是错误的。这应该是。有关将日期从一种格式转换为另一种格式的更多详细信息,请参见此http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDat
我在将日期转换为不同格式的字符串时遇到了问题。日期: 我想将此格式转换为另一种格式:。 当我尝试转换它时,我会得到不同的结果: 我得到了一个错误的结果,月被替换成了分钟:
问题内容: 我在字符串中有一个日期,例如“ 2012年12月12日”。如何将其转换为毫秒(长)? 问题答案: 使用SimpleDateFormat