【问题标题】:Java system timeJava系统时间
【发布时间】:2012-04-28 08:38:38
【问题描述】:

我从 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吗?

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

【问题讨论】:

标签: java time systemtime


【解决方案1】:

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

可以返回now.toString() - 但这将使用Date.toString() 碰巧选择的格式,而你想要一个特定的格式。在这种情况下,SimpleDateFormat 对象的要点是将Date(它是一个时间点,不参考任何特定的日历或时区)转换为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,而且它的格式是线程安全的,因此您可以轻松地保留对单个 单个的引用格式化对象。

【讨论】:

  • 链接。惊人的 !! ..我是的,我在另一个帖子中也遇到了你在乔达时间的回答。谢谢
【解决方案2】:
public static String getCurrentTimeStampwithTimeOnly() {
    return new SimpleDateFormat("HH:mm:ss").format(new Date());
}

帮助您做到这一点。

【讨论】:

    【解决方案3】:

    您可以随时拨打此电话

    现在日期 = 新日期();

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

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

    【讨论】:

      猜你喜欢
      • 2023-04-08
      • 2015-07-04
      • 2011-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-11
      • 1970-01-01
      相关资源
      最近更新 更多