Jon*_*eet 74
你试过用过Timestamp.valueOf(String)吗?它看起来应该几乎完全符合您的要求 - 您只需要将日期和时间之间的分隔符更改为空格,将小时和分钟之间的分隔符更改为分钟和小时和小时:
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());
}
}
Run Code Online (Sandbox Code Playgroud)
假设您已经验证了字符串长度,这将转换为正确的格式:
static String convertSeparators(String input) {
char[] chars = input.toCharArray();
chars[10] = ' ';
chars[13] = ':';
chars[16] = ':';
return new String(chars);
}
Run Code Online (Sandbox Code Playgroud)
或者,通过采用子串并使用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);
Run Code Online (Sandbox Code Playgroud)
你可以用Timestamp.valueOf(String).文档说明它理解格式中的时间戳yyyy-mm-dd hh:mm:ss[.f...],因此您可能需要更改传入字符串中的字段分隔符.
然后,如果你要这样做,那么你可以自己解析它并使用该setNanos方法来存储微秒.
这是将字符串转换为日期的预期方法:
String timestamp = "2011-10-02-18.48.05.123";
DateFormat df = new SimpleDateFormat("yyyy-MM-dd-kk.mm.ss.SSS");
Date parsedDate = df.parse(timestamp);
Run Code Online (Sandbox Code Playgroud)
诚然,它只有毫秒级的分辨率,但是在所有服务中,它都比Twitter慢,这就是您所需要的,尤其是因为大多数计算机甚至都无法追踪到实际的纳秒级。
| 归档时间: |
|
| 查看次数: |
150753 次 |
| 最近记录: |