我有一个日期,我想换成不同的格式。
当前格式:Fri Apr 07 08:21:19 MDT 2017
所需格式:2017-04-07T13:28:41.00MDT
。我希望将所需的格式输出作为字符串。
我目前正在这样做:
DateTimeFormatter sourceFormat = DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss z uuuu");
ZonedDateTime dateParsed = ZonedDateTime.parse(dateStr, sourceFormat);
String fullDateTimeStr = fullDateTime.format(dateParsed);
格式化是正确的,但我遇到的主要问题是保留小数秒(时区之前的两个数字。)我知道我收到的日期有保留的ms /小数秒,因为当我打印出long epoch = ((Date) date).getTime();
时,我得到了纪元时间,我可以转换它(使用在线转换工具),它显示正确的日期/时间与ms。
发生了什么?
答案 0 :(得分:0)
SELECT
'col1' as `col_name`,
SUM(IF(`col1` = 'na',1,0)) as `na`,
SUM(IF(`col1` = 'na',0,1)) as `not_na`
FROM `table`
UNION
SELECT
'col2' as `col_name`,
SUM(IF(`col2` = 'na',1,0)) as `na`,
SUM(IF(`col2` = 'na',0,1)) as `not_na`
FROM `table`;
示例输出:
DateTimeFormatter targetFormat = DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ss.SSSz");
ZonedDateTime zdt = ZonedDateTime.now();
System.out.println(zdt.format(targetFormat));
格式模式中需要2017-04-14T21:19:58.409CEST
毫秒。
请考虑您是否需要通常含糊不清的三个或四个字母的时区缩写。我更喜欢使用SSS
作为DateTimeFormatter.ISO_ZONED_DATE_TIME
之类的输出。这也可以避免您自己构建模式字符串。