2008-09-19 110 views
10

在Java中生成当前日期戳记的最佳方式是什么?用Java生成当前日期戳记

YYYY-MM-DD:HH-MM-SS

+0

“何时不使用数据库”?什么??你通常查询数据库来检索当前时间吗? – 2008-09-19 03:04:04

+0

你想要一个格式的字符串或某种时间戳/日期对象吗? – sblundy 2008-09-19 03:04:42

+0

JohnMilikan:效率低下,您可以从sysibm.sysdummy1中选择当前日期(这是DB2变体,我无法记住什么ORACLE虚拟表被称为)。你说得对,那不是我做这件事的方式。 – paxdiablo 2008-09-19 03:13:59

回答

26

使用标准的JDK,你将要使用java.text.SimpleDateFormat的

Date myDate = new Date(); 
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd:HH-mm-ss"); 
String myDateString = sdf.format(myDate); 

但是,如果你要使用Apache Commons包郎,你可以使用org.apache.commons的选项。 lang.time.FastDateFormat

Date myDate = new Date(); 
FastDateFormat fdf = FastDateFormat.getInstance("yyyy-MM-dd:HH-mm-ss"); 
String myDateString = fdf.format(myDate); 

FastDateFormat具有线程安全的优点,因此您可以在整个应用程序中使用单个实例。这是严格的格式化日期,不支持像SimpleDateFormat解析,如下例:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd:HH-mm-ss"); 
Date yourDate = sdf.parse("2008-09-18:22-03-15"); 
8
Date d = new Date(); 
String formatted = new SimpleDateFormat ("yyyy-MM-dd:HH-mm-ss").format (d); 
System.out.println (formatted); 
0

SimpleDateFormatter是你想要的。

1

还有

long timestamp = System.currentTimeMillis() 

这就是new Date()(@John Millikin)内部使用。一旦你有了,你可以将其格式化,只要你喜欢。

0

我认为你需要在你的问题上更清楚一点。特别是,您在过程结束时需要哪种数据类型?一个字符串?

0
final DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd:hh-mm-ss"); 

formatter.format(new Date()); 

JavaDoc for SimpleDateFormat提供有关日期和时间模式字符串的信息。