1

我从 SO 的一个问题中复制了这段代码:

public static String getCurrentTimeStamp() {
  SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  Date now = new Date();
  String strDate = sdfDate.format(now);
  return strDate;
}

我只想获取系统时间而不是日期。然后我必须将第二行代码更改为:

SimpleDateFormat sdfDate = new SimpleDateFormat(" HH:mm:ss") ; 

然后,DATE() 必须获取当前时间。到目前为止清楚,但我无法理解使用的 format() 函数。我的意思是我们不能简单地输出变量now而不是strdate?仅仅是因为函数的返回类型getCurrentTimeStamp()是String吗?

请澄清一下,如果还有其他更简单的一行代码可以单独获取系统时间,请分享。

4

3 回答 3

7

我的意思是我们现在不能简单地输出变量而不是 strdate。

好吧,您可以返回now.toString()-但这将使用Date.toString()恰好选择的格式,而您想要特定的格式。在这种情况下,对象的要点SimpleDateFormat是将 a Date(这是一个时间点,不参考任何特定的日历或时区)转换为 a String,应用适当的时区、日历系统和文本格式(在您的情况下HH:mm:ss) .

不过,您仍然可以通过删除局部变量(每个变量只使用一次)来简化您的方法:

public static String getCurrentTimeStamp() {
    return new SimpleDateFormat("HH:mm:ss").format(new Date());
}

或者,也许您会发现保留日期格式的变量而不是日期和返回值更具可读性:

public static String getCurrentTimeStamp() {
    DateFormat format = new SimpleDateFormat("HH:mm:ss");
    return format.format(new Date());
}

我个人建议改用Joda Time,请注意——它是一个更好的日期/时间 API,并且它的格式是线程安全的,因此您可以轻松地保留对单个格式对象的引用。

于 2012-04-28T08:41:21.043 回答
3
public static String getCurrentTimeStampwithTimeOnly() {
    return new SimpleDateFormat("HH:mm:ss").format(new Date());
}

帮助您做到这一点。

于 2012-04-28T09:19:16.553 回答
0

您可以随时拨打此电话

现在日期 = 新日期(); 

now 变量将包含当前时间戳 format 函数只是从这个时间戳生成一个字符串

还可以看看 Calendar 类(Calendar.getInstance())

于 2012-04-28T08:43:35.063 回答