在Java中转换DateTime格式!

时间:2011-04-14 08:36:58

标签: java datetime yahoo-messenger

我只需要一个关于java中DateTime格式的小帮助。我正在编写一个基于yahoo messanger的简单聊天应用程序,其中我将读取yahoo messanger的数据包并显示聊天消息。现在我想要显示在特定的文章中,据说“timestamp”将是0x477BBA61(十进制1199290977),这意味着“Wed,2008年1月2日16:22:57 GMT ”。 我试图揭示如何将十进制转换为该特定日期。我试图编写一个简单的java应用程序来转换它并给它一些其他的时间。

  public static void main(String[] arg)
        {
             Calendar  obj = Calendar.getInstance();
          obj.setTimeZone(TimeZone.getTimeZone("GMT"));
            obj.setTimeInMillis(1199290977l);
          System.out.println( obj.get(Calendar.HOUR)+":"+obj.get(Calendar.MINUTE));
        }

output:9:8

有人可以帮我吗?

4 个答案:

答案 0 :(得分:4)

您的价值1199290977L是错误的。自Unix时代(UTC时间1970年1月1日午夜)以来的测量值 - 你需要将它乘以1000以获得毫秒自纪元以来。

您还使用Calendar.HOUR这是12小时制,而不是Calendar.HOUR_OF_DAY,即24小时制。这段代码:

Calendar  obj = Calendar.getInstance();
obj.setTimeZone(TimeZone.getTimeZone("GMT"));
obj.setTimeInMillis(1199290977000L);
System.out.println(obj.get(Calendar.HOUR_OF_DAY) + ":" + 
                   obj.get(Calendar.MINUTE));

...打印16:22。

但是,你绝对应该使用java.text.DateTimeFormat课而不是自己这样做 - 或者,理想情况下,使用Joda Time代替。{/ p>

答案 1 :(得分:0)

Imho继续你需要知道:

whether or not that number is milliseconds or not
what is the starting point (in java is  January 1, 1970, 00:00:00 GMT)

答案 2 :(得分:0)

时区可能是几秒钟;尝试将该值乘以1000以获得Calendar期望的毫秒数。

答案 3 :(得分:-2)

你需要使用SimpleDateFormat - 看看文档,它很容易理解,而且它包含很多例子(所以你不需要搜索“日期格式教程”或者其他东西像那样:))

编辑:哎呀,我错过了你在几秒钟而不是毫秒内传递时间的部分,结果时间错了,我误解了你的问题,并认为你只想解析时间,Jon的答案更好:)