2010-11-08 27 views

回答

5

你你的java.sql.Timestamp轉換爲java.sql.Date,並通過日曆發送。

java.sql.Timestamp ts = rs.getTimestamp(1); 
java.util.GregorianCalendar cal = Calendar.getInstance(); 
cal.setTime(ts); 
System.out.println(cal.get(java.util.Calendar.DAY_OF_WEEK)); 
+1

我認爲'Calendar.get()'返回一個整數。所以,這意味着你仍然需要在一週中創建一個代表字符串。 – 2010-11-08 22:54:51

+3

絕對沒有必要爲它建立一個新的日期。 'Timestamp'是'java.util.Date'的**子類**。所以'cal.setTime(ts)'會起到很好的作用。此外,推薦的做法是通過其抽象工廠獲取日曆爲「Calendar cal = Calendar.getInstance()'。 – BalusC 2010-11-09 03:13:53

+0

改進的答案:) – bwawok 2010-11-09 14:11:01

2

SimpleDateFormat將提供使用該圖案"EEEE"一個Locale特定表示:

public static final String getDayName(final java.util.Date date, final java.util.Locale locale) 
      { 
      SimpleDateFormat df=new SimpleDateFormat("EEEE",locale); 
      return df.format(date); 
      } 

實例:

System.out.println(getDayName(new Date(),Locale.US)); 

返回Tuesday

但要注意new SimpleDateFormat(..)expensive

+0

不使用此功能! COS SimpleDateFormat沒有測量時區(https://stackoverflow.com/questions/18122608/simpledateformat-parse-loses-timezone/18124407#18124407),但是當你設置時間很長時,你不知道它的時區! – 2017-12-21 11:05:54

5

如果ts然後你Timestamp對象來獲取月份字符串格式:

String month = (new SimpleDateFormat("MMMM")).format(ts.getTime()); // "April" 

和一週的一天:

String day = (new SimpleDateFormat("EEEE")).format(ts.getTime()); // "Tuesday" 
+0

不要使用這個! COS的SimpleDateFormat沒有測量時區(https://stackoverflow.com/questions/18122608/simpledateformat-parse-loses-timezone/18124407#18124407) 但是,當你從長凝結時間,你不知道它時區! – 2017-12-21 11:05:32

+0

以long表示的任何時間都表示爲自epoch起的毫秒數。這是UTC。 – 2018-02-26 06:24:55