如何从android中的“2015-02-24”中获取“星期一”字符串

时间:2015-03-30 07:34:43

标签: java android date

我有一个字符串" 2015-02-24",我怎样才能得到像星期一或星期一的#34;在android中。我尝试使用下面的代码但失败了。

SimpleDateFormat sdf = new SimpleDateFormat("EEEE");
                    Date d = new Date("2015-02-24");
String dayOfTheWeek = sdf.format(d);

4 个答案:

答案 0 :(得分:4)

String input_date_string="2015-02-24";
        SimpleDateFormat dateformat=new SimpleDateFormat("yyyy-MM-dd");
        Date date;
        try {
            date = dateformat.parse(input_date_string);
            DateFormat dayFormate=new SimpleDateFormat("EEEE"); 
            String dayFromDate=dayFormate.format(date);
            Log.d("asd", "----------:: "+dayFromDate);

        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

答案 1 :(得分:2)

使用日历实例或使用DateFormat

简单:

Calendar c = Calendar.getInstance();
c.setTime(yourDate);
int dayOfWeek = c.get(Calendar.DAY_OF_WEEK);

或者:

String dayOfTheWeek = (String) android.text.format.DateFormat.format("EEEE", date);//Thursday
String stringMonth = (String) android.text.format.DateFormat.format("MMM", date); //Jun
String intMonth = (String) android.text.format.DateFormat.format("MM", date); //06
String year = (String) android.text.format.DateFormat.format("yyyy", date); //2013
String day = (String) android.text.format.DateFormat.format("dd", date); //20

更新:你必须在Java doc中看到Date:

  

构造函数摘要:

     

<强>日期():   分配一个Date对象并对其进行初始化,使其表示分配时间,测量精确到毫秒。

     

日期(int year,int month,int date):   已过时。从JDK 1.1版开始,由Calendar.set(年份+ 1900,月份,日期)或GregorianCalendar(年份+ 1900,月份,日期)取代。

     

日期(int year,int month,int date,int hrs,int min):   已过时。从JDK 1.1版开始,由Calendar.set(年份+ 1900,月份,日期,小时,分钟)或GregorianCalendar(年份+ 1900,月份,日期,小时,分钟)取代。

     

日期(int year,int month,int date,int hrs,int min,int sec):   已过时。从JDK 1.1版开始,由Calendar.set(年份+ 1900,月,日,小时,分钟,秒)或GregorianCalendar(年+ 1900,月,日,小时,分钟,秒)取代。

     

日期(漫长日期):   分配一个Date对象并对其进行初始化,以表示自标准基准时间(即“epoch”)以来的指定毫秒数,即1970年1月1日00:00:00 GMT。

     

日期(字符串s):   已过时。从JDK 1.1版开始,由DateFormat.parse(String s)替换。

只有日期()和日期(长日期)仍可使用。

答案 2 :(得分:1)

您需要先将String格式的日期转换为Date对象。这可以通过以下方式完成:

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = dateFormat.parse(date);

然后您可以通过以下方式格式化上述日期:

SimpleDateFormat weekDayFormat = new SimpleDateFormat("EEEE");
String dayOfTheWeek = weekDayFormat.format(date);

答案 3 :(得分:0)

所有答案都是正确的。我只是总结了所有人的本质。

首先,您需要将String解析为Date,如下所示:

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
try {
    Date date = dateFormat.parse("2015-02-24");
}
catch (ParseException e) {
    e.printStackTrace();
}

您的date已做好准备:)

但不推荐使用Date类的主要功能。所以你应该使用Calendar代替。像这样:

Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
switch(dayOfWeek)
{
    case Calendar.SUNDAY: 
        break;
    case Calendar.MONDAY:
        break;
    case Calendar.TUESDAY:
        break;
    case Calendar.WEDNESDAY:
        break;
    case Calendar.THURSDAY:
        break;
    case Calendar.FRIDAY:
        break;
    case Calendar.SATURDAY:
        break;
}

现在使用calendar,您可以得到任何您想要的东西。以下是Calendar on Android Docs的更多信息。