当前位置: 首页 > 知识库问答 >
问题:

使用getTime()方法将SimpleDateFormat转换为Timestamp会丢失精度

顾淳
2023-03-14

我有一个方法可以使用SimpleDateFormat将字符串(yyyy-MM-dd hh:mm:ss.sss)解析为日期对象。

public static Timestamp convertToTimestamp(String stringToFormat) {
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
    try {
        Date date = dateFormat.parse(stringToFormat);
        Timestamp tstamp = new Timestamp(date.getTime());
        return tstamp;
    } 
    catch (ParseException e) {
        return null;
    }
}
Timestamp tstamp = new Timestamp(date.getTime());

共有1个答案

姚建树
2023-03-14

精度不会丢失:尾随的零被简单地截断。

您可以使用以下方法进行验证:

Date dt = new Date();

dt.setTime(123); //123 milliseconds
Timestamp tstamp = new Timestamp(dt.getTime());
System.out.println("tstamp = " + tstamp);

dt.setTime(0); //0 milliseconds => truncated
tstamp = new Timestamp(dt.getTime());
System.out.println("tstamp = " + tstamp);

它打印:

tstamp = 1970-01-01 01:00:00.123
tstamp = 1970-01-01 01:00:00.0
 类似资料:
  • 问题内容: 码: 输出: 请注意,将格式正确设置为GMT,但是丢失了GMT详细信息。我知道我可以使用并解决此问题,但是造成这种现象的原因是什么? 这是一个重复的问题,没有任何答案。 编辑:让我以另一种方式提出问题,什么是检索Date对象的方式,使其始终在GMT中? 问题答案: 我需要的是: 输出:有点可疑,但我只希望日期保持一致

  • 我从获取事件并存储到中。解析,其中包含字段,为表创建列,如下所示: 在代码中: 甚至尝试了:,也生成了相同的错误。如何通过spark作业将正确强制转换为并插入到中

  • 问题内容: 以下代码存在问题: 是,是。在不丢失信息的情况下,在这两种数字类型之间进行转换以使用编码器和解码器的唯一方法是吗? 注意,在您的典型情况下,我不尝试直接进行数值转换。我更关心维护随机数生成器的统计属性。 问题答案: 看到-1与以32位运行的进程一致。 例如,请参阅Go1.1发行说明(已引入) 使用可以帮助您查看发生了什么 事实证明,OP实战程序([在注释中]确认它最初以32位运行(因此

  • 问题内容: 将日期转换为其他格式的字符串时遇到问题。日期: 我想将此格式转换为另一种格式:。 当我尝试将其转换时,使用以下方法会得到不同的结果: 我得到了错误的结果,该月已替换为分钟: 问题答案: 这是错误的。这应该是。有关将日期从一种格式转换为另一种格式的更多详细信息,请参见此http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDat

  • 我在将日期转换为不同格式的字符串时遇到了问题。日期: 我想将此格式转换为另一种格式:。 当我尝试转换它时,我会得到不同的结果: 我得到了一个错误的结果,月被替换成了分钟:

  • 我需要将docx转换成pdf,我正在使用docx4j-3.2.1库。生成的pdf输出中有一些格式丢失。 可以清楚地看到,有两个值得注意的问题。一个是页眉中图像的大小/尺寸,在生成的pdf中减小。它没有像输入中那样覆盖整个标题区域。 其次是字体大小似乎发生了变化(或者字体本身发生了变化) 我如何在生成的pdf中保留标题上原始图像的尺寸?有没有一些方法可以用来微调docx到pdf的转换? 任何帮助都非