如何从Timestamp获取MM / DD / YY格式的日期

时间:2011-05-25 11:10:01

标签: java android

我希望从时间戳中获取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服务接收。

7 个答案:

答案 0 :(得分:23)

更好的方法

只需使用SimpleDateFormat

new SimpleDateFormat("MM/dd/yyyy").format(new Date(timeStampMillisInLong));

您的方法中的错误

DAY_OF_MONTHMONTH,..等只是Calendar类使用的常量int值 内部

您可以cal

获取cal.get(Calendar.DATE)所代表的日期

答案 1 :(得分:20)

使用SimpleDateFormat

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date();
String time = sdf.format(date);

答案 2 :(得分:7)

出了什么问题:

Calendar.DAY_OF_MONTHCalendar.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