如何通过特定日期确定星期几?

问题

例如,我有日期:"2010年2月23日"(2010年2月23日)。我想将它传递给一个函数,该函数将返回星期一的第.我该怎么做?

在此示例中,函数应返回String"Tue"。

此外,如果只需要日序,那么如何检索?


#1 热门回答(271 赞)

是。根据你的确切情况:

  • 你可以使用java.util.Calendar:Calendar c = Calendar.getInstance();
    c.setTime(yourDate);
    int dayOfWeek = c.get(Calendar.DAY_OF_WEEK);
  • 如果你需要输出为Tue而不是3(星期几从1开始索引),而不是通过日历,只需重新格式化字符串:new SimpleDateFormat("EE")。format(date)(EE含义) "星期几,短版")
  • 如果你的输入是字符串而不是Date,你应该使用SimpleDateFormat来解析它:new SimpleDateFormat("dd / M / yyyy")。parse(dateString)
  • 你可以使用joda-time的DateTime并调用dateTime.dayOfWeek()和/或DateTimeFormat。

#2 热门回答(52 赞)

String input_date="01/08/2012";
  SimpleDateFormat format1=new SimpleDateFormat("dd/MM/yyyy");
  Date dt1=format1.parse(input_date);
  DateFormat format2=new SimpleDateFormat("EEEE"); 
  String finalDay=format2.format(dt1);

使用此代码从输入日期查找日期名称。简单且经过充分测试。


#3 热门回答(22 赞)

只需使用SimpleDateFormat

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy", java.util.Locale.ENGLISH);
Date myDate = sdf.parse("28/12/2013");
sdf.applyPattern("EEE, d MMM yyyy");
String sMyDate = sdf.format(myDate);

其结果是:Sat,28 Dec 2013

默认构造函数采用"默认"Locale,因此在需要特定模式时请小心使用它。

public SimpleDateFormat(String pattern) {
    this(pattern, Locale.getDefault(Locale.Category.FORMAT));
}