首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >仅当毫秒为2位数字时为java.time.format.DateTimeParseException

仅当毫秒为2位数字时为java.time.format.DateTimeParseException
EN

Stack Overflow用户
提问于 2018-04-18 14:21:16
回答 3查看 1.4K关注 0票数 1

我使用java8格式化程序像'2018-04-12 15:12:32.999'一样解析日期。当我有像this date的2018-04-12 15:12:32.999'这样的3位毫秒时,它工作得很好,但它失败了,并抛出了一个异常java.time.format.DateTimeParseException: Text '2018-04-18 15:27:10.77' could not be parsed at index 20,当date只有2位毫秒时,你能建议如何解析这个日期吗?

我的格式化工具使用的是"yyyy-MM-dd HH:mm:ss.SSS"模式“。我的代码如下:

代码语言:javascript
运行
AI代码解释
复制
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
LocalDateTime.parse(dateStr,formatter);
EN

回答 3

Stack Overflow用户

发布于 2019-01-28 11:07:08

代码语言:javascript
运行
AI代码解释
复制
String dateStr = "2018-04-12 15:12:32.99";
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
            .appendPattern("yyyy-MM-dd HH:mm:ss")
            .appendFraction(ChronoField.MILLI_OF_SECOND, 2, 3, true)
            .toFormatter();
System.out.println(LocalDateTime.parse(dateStr, formatter));

其中,2,3 -字段的最小宽度和最大宽度

输出:

2018-04-12T15:12:32.990

票数 2
EN

Stack Overflow用户

发布于 2018-04-19 03:04:16

有几种选择。我会选择这个:

代码语言:javascript
运行
AI代码解释
复制
    DateTimeFormatter formatter = new DateTimeFormatterBuilder()
            .append(DateTimeFormatter.ISO_LOCAL_DATE)
            .appendLiteral(' ')
            .append(DateTimeFormatter.ISO_LOCAL_TIME)
            .toFormatter();
    String dateTimeString = "2018-04-18 15:27:10.77";
    LocalDateTime dateTime = LocalDateTime.parse(dateTimeString, formatter);
    System.out.println(dateTime);

输出:

2018-04-18T15:27:10.770

DateTimeFormatter.ISO_LOCAL_TIME可以选择接受小数点和一到九位数字。我更喜欢使用构建器来组合预定义的格式化程序,而不是从头开始构建自己的格式化程序。

有些人更喜欢短一点的。就我个人而言,我觉得这有点老生常谈:

代码语言:javascript
运行
AI代码解释
复制
    dateTimeString = dateTimeString.replace(' ', 'T');
    LocalDateTime dateTime = LocalDateTime.parse(dateTimeString);

输出是相同的。我们利用了两个事实:(1)单参数LocalDateTime.parse解析ISO8601格式。(2)您的输入字符串非常接近ISO8601格式,只是缺少表示时间部分开始位置的T

您不需要第三个选项,但为了完整起见,我想提一下:如果从头开始构建格式化程序并且需要可变数量的小数,请使用DateTimeFormatterBuilder (我在第一个代码片段中使用的类)和its appendFraction method。它使您可以控制小数的最小和最大数量。

票数 1
EN

Stack Overflow用户

发布于 2018-04-18 14:34:26

15:12:32:999包含冒号:。您的pattern HH:mm:ss.SSS包含一个不匹配的点.

这是可行的。

代码语言:javascript
运行
AI代码解释
复制
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Playground {

    public static void main(String[] args) throws ParseException {
        String pattern = "yyyy-MM-dd HH:mm:ss.SSS";

        String s1 = "2018-04-12 15:12:32.999";
        String s2 = "2018-04-18 15:27:10.77";

        SimpleDateFormat sdf = new SimpleDateFormat(pattern);

        Date d1 = sdf.parse(s1);
        System.out.println(d1);

        Date d2 = sdf.parse(s2);
        System.out.println(d2);
    }

}

输出:

代码语言:javascript
运行
AI代码解释
复制
Thu Apr 12 15:12:32 CEST 2018
Wed Apr 18 15:27:10 CEST 2018
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49902174

复制
相关文章
mybatis当传入数据类型为Int时并且值为0时,会判断为空字符串
今天在mbatis中使用Xml配置sql语句时,出现了这样一个问题。当我传入的参数为0去做判断时,mybatis会把参数0当成是空字符串去判断而引起查询结果错误。
botkenni
2022/06/01
3.6K0
Collectors.toMap 当value为空时,报空指针
import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors;
botkenni
2022/11/12
3.1K0
Collectors.toMap 当value为空时,报空指针
IL3002:当发布为单个文件时,避免调用
将应用发布为单个文件(例如将项目中的 PublishSingleFile 属性设置为 true)时,调用使用 RequiresAssemblyFilesAttribute 属性注释的成员与单文件不兼容。 这些调用可能不兼容,因为使用此属性注释的成员要求程序集文件位于磁盘上,而嵌入单文件应用的程序集已加载到内存中。
呆呆
2022/02/26
4690
当“数据为中心”时代来临
熟悉存储发展趋势就会知道:如今冯·诺依曼架构备受挑战,简单说,当数据为中心时代到来,要求计算围着数据转,以减小数据搬移带来的性能瓶颈以及功耗,所谓解决“存储墙”问题,而冯·诺依曼架构是一个以计算为中心的架构,新的时代要求创新的架构。
用户5498443
2021/08/25
1.3K0
判断是否为数字
所以我们判断一个变量是否为数字,或者改字符串是否能转换成数字,就可以使用isNaN函数然后取反
阿超
2022/08/17
5.4K0
判断是否为数字
java判断是否为数字
isDigit() 方法用于判断指定字符是否为数字。如果字符为数字,则返回 true;否则返回 false。
Java架构师必看
2021/12/21
16.9K0
IL3001:当发布为单个文件时,避免访问程序集文件路径
发布为单文件(例如,通过将项目中的 PublishSingleFile 属性设置为 true)时,为单文件捆绑包内嵌入的程序集调用 Assembly.GetFile(s) 方法将始终引发异常,因为这些方法与单文件不兼容。
呆呆
2022/02/26
5090
python判断是否为数字类型_python判断字符串是否为数字
以下实例通过创建自定义函数 is_number() 方法来判断字符串是否为数字:# -*- coding: UTF-8 -*-
全栈程序员站长
2022/11/17
4.1K0
IL3000:当发布为单个文件时,避免访问程序集文件路径
发布为单文件(例如将项目中的 PublishSingleFile 属性设置为 true)时,调用嵌入在单文件捆绑包内的程序集的 Assembly.Location 属性将始终返回空字符串。
呆呆
2022/02/26
5300
JavaScript如何判断是否为数字?
isNaN()函数是js自带的全局函数,isNaN() 函数用于检查其参数是否是非数字值。
全栈程序员站长
2022/09/07
2.7K0
使用jquery判断是否为数字
说明: isNaN()函数,如果传入的参数是数字返回false,否则返回true
全栈程序员站长
2022/06/30
2.9K0
【翻译自mos文章】当指定asm disk 为FRA时,11.2.0.3的dbua hang住
来源于: 11.2.0.3 DBUA Hangs While Specifying ASM Disk To FRA (文档 ID 1427179.1)
全栈程序员站长
2022/07/08
3060
数字判断(指针为函数参数)
输入一个字符串,判断这个字符串是否一个完全整数值的字符串,例如输入"1234",那么表示整数1234,输入"12a3"就表示只是一个字符串,不是一个整数
叶茂林
2023/07/28
1690
mysql varchar类型字段为数字时,不带引号查询时查询结果与事实不符
今天出现了一个bug,在数据库中我们将订单表中的order_no从之前的bigint(20)改成varchar(20)后,原有的代码逻辑在进行时查询时,之前是以Long类型传参查询的。
翎野君
2023/05/12
1.6K0
mysql varchar类型字段为数字时,不带引号查询时查询结果与事实不符
Collectors toMap,当value为null时空指针报错
那么怎么解决呢? 既然时merge方法造成的,那就不调merge方法。 我们用自己定义的accumulator,用Stream的另一个collect方法
似水的流年
2021/06/17
1.6K0
JavaScript 转换数字为整数的方法
本文将会列举并说明JavaScript 把一个number(或者numerical的对象)转换成一个整数相关方法。
用户3158888
2019/05/29
1.1K0
JavaScript 判断输入的值为数字
使用js自带全局函数isNaN(), isNaN()返回一个Boolean值,如下 :
Devops海洋的渔夫
2019/06/02
3.7K0
和为 S 的两个数字
在有序数组中找出两个数,使得和为给定的数 S。如果有多对数字的和等于 S,输出两个数的乘积最小的。
MickyInvQ
2021/12/07
4570
ABAP之利用正则判断是否为数字
开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第22天,点击查看活动详情
百里丶落云
2022/12/13
3.1K0
ABAP之利用正则判断是否为数字
点击加载更多

相似问题

当毫秒为零时,PyMongo存储没有毫秒的ISODate

10

flex 4.1 NumberFormatter:配置为仅当数字为浮点型时才显示精度为1

23

Bash -仅当输出为终端时

11

仅当为空时删除DIV

40

当类型为文本时,将输入框限制为仅数字

350
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档