【问题标题】:24 hour in SimpleDateFormat() and milliseconds in javaSimpleDateFormat() 中为 24 小时,java 中为毫秒
【发布时间】:2014-04-09 11:07:00
【问题描述】:

我正在构建一个数据采集软件,现在我正在创建一个日志文件。我想在每个条目上显示时间。一个简单的代码(无法编译)如下

import java.util.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;

public class daq(){

    SimpleDateFormat now = new SimpleDateFormat("hh:mm:ss");

    public void go(){
        report.setProperty("INSERT", "["+now.format(new Date())+"] Acquisition Started\n");
    }
    public void init(){
        report.setProperty("INSERT", "["+now.format(new Date())+"] ADC Channel 1: Read Complete\n");
        report.setProperty("INSERT", "["+now.format(new Date())+"] Initialisation Complete\n");
    }
    public void stop(){
        report.setProperty("INSERT", "["+now.format(new Date())+"] Acquisition Stopped\n");
    }

}

上述“代码”的典型结果如下

[06:30:09] Acquisition Started
[06:30:09] ADC Channel 1: Read Complete
[06:30:09] Initialisation Complete
[06:30:13] Acquisition Stopped

我想知道是否有办法以 24 小时格式显示时间(即 18:30:09 而不是 06:30:09)?

还有显示毫秒的方法吗?像hh:mm:ss:mils 这样的格式?我尝试使用sss 而不是ss,但我只为第一个s 得到0。一个示例输出是

[21:50:004] Acquisition Started
[21:50:004] ADC Channel 1: Read Complete
[21:50:004] Initialisation Complete
[21:50:013] Acquisition Stopped

【问题讨论】:

  • 06:30:09PM 相当于 18:30:09,而不是 16:30:09 ;)
  • @Julien:哎呀!!!我会改正的!!!谢谢!!!
  • 我提到这一点是为了防止你搜索为什么你得到 18 而你期望 16 ;)
  • @Julien:我实际上预计是 18,所以这不是问题!还是谢谢!!!

标签: java date time format


【解决方案1】:

试试这个:-

SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss:SSS");

Also read this. 希望对你有帮助。

【讨论】:

    【解决方案2】:

    您应该使用HH 而不是hh

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

    【讨论】:

    • @Thanos 你看过SimpleDateFormat的文档了吗?您将在那里获得所有格式。顺便说一句,您使用 SSS 的毫秒数。
    • 我已经尝试过sss,但实际上并没有得到我想要的。请检查我编辑的问题。
    【解决方案3】:

    时区

    问题和答案忽略了时区问题。通常最好使用 UTC(无时区偏移)进行登录以避免歧义并避免混淆夏令时。

    ISO 8601

    明智的 ISO 8601 标准定义了日期时间值的文本表示格式。这种格式在日志记录中特别有用。

    乔达时间

    Joda-Time 库支持时区,内置 UTC 时区常量,使用 ISO 8601 格式,默认为 24​​ 小时制。

    String output = DateTime.now( DateTimeZone.UTC ).toString();
    

    【讨论】:

      猜你喜欢
      • 2019-05-01
      • 2011-09-26
      • 2018-11-16
      • 2015-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-06
      • 1970-01-01
      相关资源
      最近更新 更多