将秒转换为日期时间字符串

Use*_*337 6 android

我从纪元时间开始有几秒钟,并希望将其转换为Day-Month-Year HH:MM
我尝试过以下但是它给了我错误的价值.

Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(seconds*1000);
String dateString = calendar.get(Calendar.DAY_OF_WEEK) + ", "+.......
Run Code Online (Sandbox Code Playgroud)

上面的代码不正常我在这里做错了什么.

例如,如果seconds = 1299671538 那样它会生成时间字符串,Friday, December 12, 1969因为它应该显示错误Wednesday, March 09, 2011

Ido*_*lon 17

例如,如果秒= 1299671538,则它会生成时间字符串,如1969年12月12日星期五,这是错误的应该显示在2011年3月9日星期三

你有整数溢出.只需使用以下内容(1000常量后注意"L"):

Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(seconds*1000L);
String dateString = calendar.get(Calendar.DAY_OF_WEEK) + ", "+.......
Run Code Online (Sandbox Code Playgroud)

或者更好地使用SimpleDateFormat类:

SimpleDateFormat formatter = new SimpleDateFormat("EEEE, MMMM d, yyyy HH:mm");
String dateString = formatter.format(new Date(seconds * 1000L));
Run Code Online (Sandbox Code Playgroud)

这将为您提供原始秒输入的以下日期字符串: Wednesday, March 9, 2011 13:52


小智 5

你需要使用

Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
Run Code Online (Sandbox Code Playgroud)

代替

Calendar cal = Calendar.getInstance();
Run Code Online (Sandbox Code Playgroud)

因为从秒开始的 UTC 时间取决于时区。