【问题标题】:get Year from java.util.Date从 java.util.Date 获取年份
【发布时间】:2015-02-13 21:35:06
【问题描述】:

我在 Cassandra 列族中有一个日期列。当我使用 datastax java API 从这个 CF 检索数据时,这个日期对象可以被视为一个 java.util.Date 对象。

它有一个getYear() 方法,但已被弃用。对应的javadoc说:

从 JDK 1.1 版开始,由 Calendar.get(Calendar.YEAR) - 1900 取代。

如何从这个日期对象中正确获取年、月、日属性?

【问题讨论】:

标签: java cassandra deprecated datastax java.util.date


【解决方案1】:

一个不错的选择是使用如下日期格式:

SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy");
Date             date = sdf1.parse(datetime);
String           year = sdf2.format(date);

【讨论】:

  • 无需使用SimpleDateFormatCalendar#get 又好又快。
【解决方案2】:

你可以试试看吗?

      // create a calendar
      Calendar cal = Calendar.getInstance();
      cal.setTime(datetime);  //use java.util.Date object as arguement
      // get the value of all the calendar date fields.
      System.out.println("Calendar's Year: " + cal.get(Calendar.YEAR));
      System.out.println("Calendar's Month: " + cal.get(Calendar.MONTH));
      System.out.println("Calendar's Day: " + cal.get(Calendar.DATE));

javadocs中所述;

@Deprecated public int getYear() 已弃用。从 JDK 1.1 版开始, 替换为 Calendar.get(Calendar.YEAR) - 1900。返回一个值 是从包含或的年份中减去 1900 的结果 从此 Date 对象表示的时间瞬间开始,如 以当地时区解释。返回: 表示的年份 这个日期,减去 1900。

【讨论】:

  • 你必须在获取年份之前设置日期:cal.setTime(yourDateObjectFromCassandra);然后你可以做cal.get(Calendar.YEAR);
  • @JonSkeet 是的,但是 OP 想要 Cassandra 对象的年份,而不是当前年份
  • 你是对的@Narmer,我根据问题的标题回答了。
  • 因为月份从 0 开始。一月=0、二月=1 等等。
  • @ChamilaWijayarathna January is 0
【解决方案3】:

要检索日期和时间字段,您可以使用以下代码:

DateFormat.getDateTimeInstance().getCalendar().get(DateFormat.MONTH_FIELD)

只需将 MONTH_FIELD 替换为“DAY_OF_WEEK_FIELD”即可检索星期几(我认为“1”代表星期一)或当前分钟的“MINUTE_FIELD”等:)

【讨论】:

    【解决方案4】:

    在 java8 中使用 LocalDate 对象

    Date date = new Date();
    LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
    int year  = localDate.getYear();
    int month = localDate.getMonthValue();
    int day   = localDate.getDayOfMonth();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-22
      • 1970-01-01
      • 1970-01-01
      • 2010-12-19
      • 2016-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多