将 Java 字符串转换为 sql.Timestamp

2024-05-16

收到以下格式的字符串:YYYY-MM-DD-HH.MM.SS.NNNNNN 时间戳来自 DB2 数据库。我需要将其解析为 java.sql.Timestamp 并且不丢失任何精度。到目前为止,我一直无法找到现有的代码来解析远至微秒的数据。 SimpleDateFormat 返回一个日期并且仅解析为毫秒。简单地查看了 JodaTime,也没有发现这可行。


你有没有尝试过使用Timestamp.valueOf(String) http://download.oracle.com/javase/7/docs/api/java/sql/Timestamp.html#valueOf%28java.lang.String%29?看起来应该这样做almost正是您想要的 - 您只需将日期和时间之间的分隔符更改为空格,并将小时和分钟、分钟和小时之间的分隔符更改为冒号:

import java.sql.*;

public class Test {
    public static void main(String[] args) {
        String text = "2011-10-02 18:48:05.123456";
        Timestamp ts = Timestamp.valueOf(text);
        System.out.println(ts.getNanos());
    }
}

假设您已经验证了字符串长度,这将转换为正确的格式:

static String convertSeparators(String input) {
    char[] chars = input.toCharArray();
    chars[10] = ' ';
    chars[13] = ':';
    chars[16] = ':';
    return new String(chars);
}

或者,通过获取子字符串并使用 Joda Time 来解析到毫秒或SimpleDateFormat(我非常喜欢 Joda Time,但您的里程可能会有所不同)。然后将字符串的其余部分作为另一个字符串并用Integer.parseInt。然后你可以很容易地组合这些值:

Date date = parseDateFromFirstPart();
int micros = parseJustLastThreeDigits();

Timestamp ts = new Timestamp(date.getTime());
ts.setNanos(ts.getNanos() + micros * 1000);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 Java 字符串转换为 sql.Timestamp 的相关文章

随机推荐