我有这个代码:
SimpleDateFormat sDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
我知道这个代码返回小时,分钟,秒的时间。我怎么能得到也毫秒和微秒?
c0vxltue1#
您不会有微秒,因为Date存储自1970年1月1日以来的毫秒数。对于毫秒,请使用S,如the javadoc中所述。
S
rn0zuynd2#
获取微秒的唯一方法是自己解析字符串。Date应该用于存储微秒,但是您可以使用long。(您也可以使用它来存储毫秒或纳秒)
Date
long
private static final String YEARS_TO_MINUTES = "yyyy-MM-dd HH:mm"; private static final SimpleDateFormat YEARS_TO_MINUTES_SDF = new SimpleDateFormat(YEARS_TO_MINUTES); public static long parseMicroSeconds(String text) throws ParseException { long timeMS; synchronized (YEARS_TO_MINUTES_SDF) { timeMS = YEARS_TO_MINUTES_SDF.parse(text.substring(0, YEARS_TO_MINUTES.length())).getTime(); } long microSecs = 0; if (text.length() > YEARS_TO_MINUTES.length() + 1) { double secs = Double.parseDouble(text.substring(YEARS_TO_MINUTES.length() + 1)); microSecs = (long) (secs * 1e6 + 0.5); } return timeMS * 1000 + microSecs; } public static String formatMicroSeconds(long timeMicroSeconds) { String dateTime; synchronized (YEARS_TO_MINUTES_SDF) { dateTime = YEARS_TO_MINUTES_SDF.format(new Date(timeMicroSeconds / 1000)); } long secs = timeMicroSeconds % 60000000; return dateTime + String.format(":%09.6f", secs / 1e6); } public static void main(String... args) throws ParseException { String dateTime = "2011-01-17 19:27:59.999650"; long timeUS = parseMicroSeconds(dateTime); for (int i = 0; i < 5; i++) System.out.println(formatMicroSeconds(timeUS += 175)); }
印刷品
2011-01-17 19:27:59.999825 2011-01-17 19:28:00.000000 2011-01-17 19:28:00.000175 2011-01-17 19:28:00.000350 2011-01-17 19:28:00.000525
如果您需要纳米计时,也可以采用类似的方法。
webghufk3#
你能做的最好的事是:
SimpleDateFormat sDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
nfeuvbwi4#
您只能显示毫秒::SS.
:SS
rseugnpd5#
import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; public class MyClass { public static void main(String args[]) { DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss:SSSSS"); for(int i=0; i<=5;i++) { System.out.println("Class 1 : " + ZonedDateTime.now().format(formatter)); } } }
输出示例:
Class 1 : 19:25:19:77336 Class 1 : 19:25:19:77483 Class 1 : 19:25:19:77487 Class 1 : 19:25:19:77490 Class 1 : 19:25:19:77493 Class 1 : 19:25:19:77496
kxe2p93d6#
检查SimpleDateFormat的Java文档,它告诉:毫秒:S型微秒不可用。
eeq64g8w7#
此示例获取毫秒。微秒不可用。
Date someDate = sDate.parse(dateString); Calendar c = Calendar.setTime(someDate); int millisecond = c.get(Calendar.MILLISECOND);
roejwanj8#
通常毫秒以大写字母s表示,在您的情况下,它将是yyyy-MM-dd HH:mm:ss:SSS。有关详细信息,请参阅Customizing formats
yyyy-MM-dd HH:mm:ss:SSS
8条答案
按热度按时间c0vxltue1#
您不会有微秒,因为Date存储自1970年1月1日以来的毫秒数。对于毫秒,请使用
S
,如the javadoc中所述。rn0zuynd2#
获取微秒的唯一方法是自己解析字符串。
Date
应该用于存储微秒,但是您可以使用long
。(您也可以使用它来存储毫秒或纳秒)印刷品
如果您需要纳米计时,也可以采用类似的方法。
webghufk3#
你能做的最好的事是:
nfeuvbwi4#
您只能显示毫秒:
:SS
.rseugnpd5#
输出示例:
kxe2p93d6#
检查SimpleDateFormat的Java文档,它告诉:毫秒:S型
微秒不可用。
eeq64g8w7#
此示例获取毫秒。微秒不可用。
roejwanj8#
通常毫秒以大写字母s表示,在您的情况下,它将是
yyyy-MM-dd HH:mm:ss:SSS
。有关详细信息,请参阅Customizing formats