我只需要一个关于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
有人可以帮我吗?
答案 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的答案更好:)