2012-04-19 43 views
0

我尝试这样做,将解析长millesecond值转换为Date对象格式的函数:解析长到Date对象格式

public static Date parseDate(long millisec, String format) { 
    try { 
     SimpleDateFormat formatter = new SimpleDateFormat(format); 
     Date formattedDate = new Date(millisec); 
     formatter.format(formattedDate); 
     return formattedDate; 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return null;  
} 

我插入函数的格式是这样的: “dd-MM-yyyy HH-mm:ss” 而我仍然得到这个结果格式:“Thu Apr 19 19:51:22 SGT 2012

任何想法,为什么我会得到这种结果?

回答

1

仅当您输出日期(实际上用于将日期转换为字符串)时应用该格式。它不会更改日期的内部表示。

对于您的情况,formattedDate对象不会受到format的任何影响。

办法看到字符串表示是这样的:

String dateString = formatter.format(formattedDate); 
System.out.println(dateString); 

这就像一个数的基础。您有许多不同的可视化数字,如101(2)5(10),但它们仅在显示数字时才有意义。否则,当您更改基本号码时,号码本身的值不会更改。

0

您的问题是formatter.format(...)返回String,这是你应该在你的函数返回的内容(你实际上会返回Date实例)

0

这条线:

formatter.format(formattedDate); 

返回一个字符串(格式化日期)。你返回的是Date对象(它本身没有格式)。您应该返回格式化程序返回的字符串。

0

您正在返回Date对象。日期是某个时间点的抽象表示,没有任何有关格式的信息。您需要返回从格式化程序获得的字符串 - 这是格式化的时间表示形式(但另一方面不包含有关时间的信息 - 您必须解析它以获取它所代表的Date对象)。

0

A Date没有自己的格式,它是格式化的SimpleDateFormat

当你打电话给formatter.format(formattedDate)它会给你一个String这是格式化的,但你忽略了返回的值。

1

你回你的init日期......将这个来代替:

return formatter.format(formattedDate); 
0

要返回的日期对象,但你需要的是从使用毫秒创建的创建日期对象返回格式化的日期字符串值。

String dateStr = formatter.format(formattedDate); return dateStr;