java - 在java中将日期转换为纳秒

标签 java string timestamp

我有一个采用这种格式的日期“2017-05-17 00:31:16.227”,我需要将其转换为“17-MAY-17 12.31.16.227000000 AM”

String convertTimestamp(Timestamp date) {

    String newstring = null;
    try {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSSSSSSSS");
        java.util.Date date1 = dateFormat.parse(date.toString());
        DateFormat sdf = new SimpleDateFormat("dd-MMM-yy hh.mm.ss.SSSSSSSSS aa");
        newstring = sdf.format(date1);

    } catch (Exception e) {
        e.printStackTrace();
    }

    System.out.println("new string" + newstring);

    return newstring;
}

但我得到的值是这样的 **“17-MAY-17 12.31.16.000000227 AM”

最佳答案

您正在使用麻烦的旧遗留日期时间类,这些类现在已被 java.time 类取代。这些遗留类仅限于 milliseconds这意味着不到一秒的小数点后三位。因此遗留类无法处理您想要的九个数字。

您想要的九位小数意味着分辨率为 nanoseconds而不是毫秒。幸运的是,java.time 类的分辨率为纳秒。

将您的输入解析为 LocalDateTime对象,因为它缺少任何时区或与 UTC 的偏移量的指示。将中间的空格替换为“T”以符合标准 ISO 8601 格式。

String input = "2017-05-17 00:31:16.227".replace( " " , "T" ) ;
LocalDateTime ldt = LocalDateTime.parse( input );

您应该能够在表示此 LocalDateTime 对象的值的字符串中强制在小数部分中添加所需的尾随零。使用 DateTimeFormatterDateTimeFormatterBuilder .

关于java - 在java中将日期转换为纳秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44036879/

相关文章:

java - 我可以自动重构整个java项目并将大写的方法参数重命名为小写吗?

java - jpql (JPA) 中重复的父子数据

javascript - 如何从 "abc def"获取 abc?

string - 如何在不乱码的情况下存储与格式宏一起使用的大字符串文字?

batch-file - 如何获取通用 Windows 批处理文件时间戳

java - 更新 Hibernate 中每一行的时间戳

java - 如何将长本地时间戳转换为字符串 UTC 时间戳

java - Dagger2 + gradle + intellij : generated classes are not found and treated as a compile error/won't autocomplete

java - MyBatis 生成器单个 resultMap

c++ - 如何在 4 个字符串之间搜索字符串