我有方法可以更改日期格式并返回它但它给出了异常

时间:2011-12-27 04:47:54

标签: java

我正在尝试在我的应用程序中显示日志文件,因为我需要我必须格式化内容以显示,因为我需要我第一次尝试显示我可以从los我的日志文件获取内容的日期看起来像......。

[1324649399] Nagios 3.3.1 starting... (PID=3751)
[1324649399] Local time is Fri Dec 23 09:09:59 EST 2011
[1324649399] LOG VERSION: 2.0
[1324649400] ndomod: NDOMOD 1.4b9 (10-27-2009) Copyright (c) 2009 Nagios Core Development Team and Community Contributors
[1324649400] ndomod: Could not open data sink!  I'll keep trying, but some output may get lost...
[1324649400] Event broker module '/usr/local/nagios/bin/ndomod.o' initialized successfully.
[1324649400] Finished daemonizing... (New PID=3752)

在实际应用程序数据中显示每一个和两个分钟,所以上述文件的内容显示日期/时间在方括号“[1324649399]”所以我想以这种格式更改它“[12-27- 2011 08:51:22]“    在我的方法中,我试图更改首先从字符串获取的日期然后我将实现它为我的代码的整个日志文件,

public Date Date() throws SQLException, ParseException
    {
      DateFormat Format; 
      Date date;
      String dat="1324649399";
      Format=new SimpleDateFormat("dd-MMM-yy");
      date=(Date)Format.parse(dat); 
      return date;
    }

可能是日期格式不像我提到的那样,但我需要格式化它,如上所述,它只是给出了异常的错误,仅此而已     希望很快收到您的建议

提前致谢!

4 个答案:

答案 0 :(得分:1)

你可以这样做:

Date d = new Date(Long.valueOf("1324649399000"));

我发现价值是第二,因此,你可以简单地加倍1000或加'000'。在我的电脑上的结果是:FST Dec 23 22:09:59 CST 2011,我想这是一个正确的答案。

DateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
System.out.println(format.format(date));

答案 1 :(得分:1)

1324649399似乎是一个基于秒的纪元值,所以你想要乘以1000转换为毫秒,这是Java的Date构造函数使用的,所以:

Date expiry = new Date(Long.parseLong("1324649399 ") * 1000);

答案 2 :(得分:0)

日期“1324649399”不是“dd-MMM-yy”格式,但是您尝试以该格式解析它。我猜“1324649399”以毫秒为单位,因此首先创建一个Date对象,然后在您创建的format(...)上调用通过DateFormat对象的Date。如果它不是以毫秒为单位,那么请确定您所使用的格式并将该格式传递给代码中的SimpleDateFormat

答案 3 :(得分:0)

我同意Pangea。您也可以使用Calendar格式化日期。

如果您需要的是在日志中打印的时间,那么我建议您使用Logger

您需要做的只是使用System.out.println(sometext)而不是 Logger.getLogger(Yourclasssname).log(Level.INFO,yourtext)。

这将打印您记录的班级名称以及时间。这也使您可以灵活地更改不同环境的日志级别。