我希望从时间戳中获取MM/DD/YY
格式的日期。
我使用了以下方法,但它没有提供正确的输出
final Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(Long.parseLong(1306249409));
Log.d("Date--",""+cal.DAY_OF_MONTH);
Log.d("Month--",""+cal.MONTH);
Log.d("Year--",""+cal.YEAR);
但它的输出如下
日期 - 5 月 - 2 年 - 1
正确的日期是2010年5月24日的时间戳 - 1306249409
注 - 时间戳由我的应用程序中使用的Web服务接收。
答案 0 :(得分:23)
更好的方法
只需使用SimpleDateFormat
new SimpleDateFormat("MM/dd/yyyy").format(new Date(timeStampMillisInLong));
您的方法中的错误
DAY_OF_MONTH
,MONTH
,..等只是Calendar
类使用的常量int值
内部
您可以cal
cal.get(Calendar.DATE)
所代表的日期
答案 1 :(得分:20)
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date();
String time = sdf.format(date);
答案 2 :(得分:7)
出了什么问题:
Calendar.DAY_OF_MONTH
,Calendar.MONTH
等是用于访问这些特定字段的静态常量。 (无论你提供什么setTimeInMillis
,它们都会保持不变。)
如何解决:
要获取这些特定字段,您可以使用.get(int field)
-method,如下所示:
Log.d("Month--",""+cal.get(Calendar.MONTH));
正如其他人指出的那样,有更方便的方法来格式化日志记录日期。例如,您可以使用SimpleDateFormat
,或者,正如我在记录时通常所做的那样,使用格式字符串和String.format(formatStr, Calendar.getInstance())
。
答案 3 :(得分:3)
Date date = new Date(System.currentTimeMillis());
SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yy");
String s = formatter.format(date);
System.out.println(s);
答案 4 :(得分:2)
TimeZone utc = TimeZone.getTimeZone("UTC"); // avoiding local time zone overhead
final Calendar cal = new GregorianCalendar(utc);
// always use GregorianCalendar explicitly if you don't want be suprised with
// Japanese Imperial Calendar or something
cal.setTimeInMillis(1306249409L*1000); // input need to be in miliseconds
Log.d("Date--",""+cal.get(Calendar.DAY_OF_MONTH));
Log.d("Month--",""+cal.get(Calendar.MONTH) + 1); // it starts from zero, add 1
Log.d("Year--",""+cal.get(Calendar.YEAR));
答案 5 :(得分:1)
Java使用自1970年1月1日以来的毫秒数来表示时间。如果你计算1306249409毫秒表示的时间,你会发现它只有362天,所以你的假设是错误的。
此外,cal.DAY_OF_MONTH
保持不变。使用cal.get(Calendar.DAY_OF_MONTH)
获取月中的某一天(与日期的其他部分相同)。
答案 6 :(得分:0)
使用String.format
能够将长(毫秒)转换为不同格式的日期/时间字符串:
String str;
long time = 1306249409 * 1000L; // milliseconds
str = String.format("%1$tm/%1$td/%1$ty", time); // 05/24/11
str = String.format("%tF", time); // 2011-05-24 (ISO 8601)
str = String.format("Date--%td", time); // Date--24
str = String.format("Month--%tm", time); // Month--05
str = String.format("Year--%ty", time); // Year--11
文档:format string。