2014-05-06 133 views
0

我的代碼:使用日期,而不是時間戳

Calendar calendar = DateProvider.getCalendarInstance(TimeZone.getTimeZone("GMT")); 
    calendar.setTime(date); 
    calendar.set(Calendar.YEAR, 1970); 
    calendar.set(Calendar.MONTH, Calendar.JANUARY); 
    calendar.set(Calendar.DATE, 1); 
    date = calendar.getTime(); 
    Timestamp epochTimeStamp = new Timestamp(date.getTime()); 

我想消除在這種情況下使用時間戳,如何能實現與epochTimeStamp這裏同樣的事情,而無需使用的java.sql.Timestamp?我需要的格式與我使用Timestamp時相同。

+0

如果你正在談論寫日期的'String'表示的格式,你應該使用'SimpleDateFormat'來代替。 –

+2

你在做什麼與時間戳? – jalynn2

+0

當你說你「需要格式相同」時,我們不知道你的意思。你能澄清一下嗎? – pamphlet

回答

1

既然你需要你的DateString表示,然後使用SimpleDateFormatDate對象轉換爲String

Calendar calendar = ... 
//... 
date = calendar.getTime(); 
Timestamp epochTimeStamp = new Timestamp(date.getTime()); 
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); 
try { 
    System.out.println(sdf.format(date)); 
    System.out.println(sdf.format(epochTimeStamp)); 
} catch (Exception e) { 
    //handle it! 
} 

從你的榜樣,打印

01/01/1970 09:21:18 
01/01/1970 09:21:18 
1

這給你一個時代時間與TimeStamp相同:

public class FormatDate { 

    public static void main(String[] args) { 

     DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd kk:mm:ss:SSS"); 
     LocalDateTime datetime = LocalDateTime.of(1970, 1, 1, 0, 0); 
     System.out.println(datetime.format(format)); 
    } 
} 
0

在Java中表示日期時間對象的另一種方法是使用Joda時間庫。

import org.joda.time.LocalDate; 
... 

LocalDate startDate= new LocalDate();//"2014-05-06T10:59:45.618-06:00"); 
//or DateTime startDate = new DateTime();// creates instance of current time 

String formatted = 
    startDate.toDateTimeAtCurrentTime().toString("MM/dd/yyy HH:mm:ss"); 

有幾種方法可以做到格式,設置和使用這些庫已經比使用JDK Date和Calendar庫更可靠的獲取時間。這些將持續在hibernate/JPA中。如果沒有別的,這希望給你的選擇。

相關問題