如何将currentTimeMillis转换为Java中的日期?

我在服务器生成的某些日志文件中有几毫秒,我也知道生成日志文件的语言环境,我的问题是将毫秒转换为指定格式的日期。 该日志的处理发生在位于不同时区的服务器上。 虽然转换为“SimpleDateFormat”程序正在取得机器的日期,因为这种格式化日期并不代表服务器的正确时间。 有没有办法处理这个优雅?

long yourmilliseconds = 1322018752992l;
        //1322018752992-Nov 22, 2011 9:25:52 PM 

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss,SSS",Locale.US);

GregorianCalendar calendar = new GregorianCalendar(TimeZone.getTimeZone("US/Central"));
calendar.setTimeInMillis(yourmilliseconds);

System.out.println("GregorianCalendar -"+sdf.format(calendar.getTime()));

DateTime jodaTime = new DateTime(yourmilliseconds, 
                    DateTimeZone.forTimeZone(TimeZone.getTimeZone("US/Central")));
DateTimeFormatter parser1 = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss,SSS");

System.out.println("jodaTime "+parser1.print(jodaTime));

输出:

Gregorian Calendar -2011-11-23 08:55:52,992
jodaTime 2011-11-22 21:25:52,992

Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(timeStamp);

int mYear = calendar.get(Calendar.YEAR);
int mMonth = calendar.get(Calendar.MONTH);
int mDay = calendar.get(Calendar.DAY_OF_MONTH);

您可以使用java.util.Date类,然后使用SimpleDateFormat格式化Date

Date date=new Date(millis);

如果毫秒值是自1970年1月1日GMT以来的毫秒数,这与JVM的标准相同,那么它与时区无关。 如果您想要将其格式化为特定时区,则可以将其转换为GregorianCalendar对象并设置时区。 之后有很多方法来设置它的格式。

链接地址: http://www.djcxy.com/p/18581.html

上一篇: How to convert currentTimeMillis to a date in Java?

下一篇: C++ doesn't tell you the size of a dynamic array. But why?