【问题标题】:java.lang.IllegalArgumentException: Too many pattern letters: mjava.lang.IllegalArgumentException:太多模式字母:m
【发布时间】:2017-02-07 19:01:51
【问题描述】:

我尝试将此字符串转换为 java LocalDateTime

String str = "2016-09-29 09:54:27.850373"

                DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.mmmmmm");
                configActivityLog.activityTimeStamp = LocalDateTime.parse(str, formatter);

但我收到此错误:

java.lang.IllegalArgumentException: Too many pattern letters: m

【问题讨论】:

  • ss 是秒,而不是毫秒。 S 代表毫秒。
  • 仍然无法正常工作。如何解决?
  • 改用ssSSS(秒最多可以有2位数字,毫秒最多可以有3位)。其余部分,即您的示例中的 373,将被忽略,因为 Java 不能表示纳米精度日期。
  • 试试HH:mm:ss.SSSSS
  • DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSS"); 为我工作

标签: java string postgresql datetime


【解决方案1】:

s 代表秒,而S 代表秒的分数,请参阅Patterns for Formatting and Parsing

sample working demo

import java.util.*;
import java.lang.*;
import java.io.*;
import java.time.*;
import java.time.format.*;
class Ideone
{
    public static void main (String[] args) throws java.lang.Exception
    {
        String str = "2016-09-29 09:54:27.850373";
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSS");
        System.out.println(LocalDateTime.parse(str, formatter));
    }
}

【讨论】:

  • 很好地分享了文档
猜你喜欢
  • 2020-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-23
  • 1970-01-01
  • 2018-10-16
相关资源
最近更新 更多