2010-11-08 55 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