Java系统时间

kus*_*lvm 1 java time systemtime

我从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;
}
Run Code Online (Sandbox Code Playgroud)

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

SimpleDateFormat sdfDate = new SimpleDateFormat(" HH:mm:ss") ; 
Run Code Online (Sandbox Code Playgroud)

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

请澄清,如果有任何其他更简单和一行代码来获取系统时间,请分享.

Jon*_*eet 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());
}
Run Code Online (Sandbox Code Playgroud)

或者你可能会发现保持变量的日期格式更具可读性,但不是日期和返回值:

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

我个人建议使用Joda Time,请注意 - 它是一个更好的日期/时间API,其格式化是线程安全的,因此您可以轻松地保持对单个格式化对象的引用.