Android日历以字符串[复制]获取当前星期几

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android日历以字符串[复制]获取当前星期几相关的知识,希望对你有一定的参考价值。

我试着通过这种方式得到一个带有实际工作日名称的字符串:

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

            if (c.get(Calendar.MONDAY) == dayOfWeek) weekDay = "monday";
            else if (c.get(Calendar.TUESDAY) == dayOfWeek) weekDay = "tuesday";
            else if (c.get(Calendar.WEDNESDAY) == dayOfWeek) weekDay = "wednesday";
            else if (c.get(Calendar.THURSDAY) == dayOfWeek) weekDay = "thursday";
            else if (c.get(Calendar.FRIDAY) == dayOfWeek) weekDay = "friday";
            else if (c.get(Calendar.SATURDAY) == dayOfWeek) weekDay = "saturday";
            else if (c.get(Calendar.SUNDAY) == dayOfWeek) weekDay = "sunday";

weekDay总是保持为空,我实际上不知道为什么因为调试器说dayOfWeek是5所以我应该等于c.get(Calendar.THURSDAY)

答案

就这么简单

sCalendar = Calendar.getInstance();
String dayLongName = sCalendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.getDefault());
另一答案

我通过执行以下操作完成了此操作:

String weekDay;
SimpleDateFormat dayFormat = new SimpleDateFormat("EEEE", Locale.US);

Calendar calendar = Calendar.getInstance();
weekDay = dayFormat.format(calendar.getTime());
  • 使用“EEEE”的日期格式将返回完整的工作日名称,即星期二
  • 使用“E”的日期格式将返回缩写名称,即Tue
  • android中返回此格式的另一个好处是它将根据区域设置翻译工作日。

您将需要查看SimpleDateFormat以了解更多信息。我认为这是最干净的方法,因为你只需要获取字符串值就不需要switch或if语句。

另一答案

您应该将dayOfWeek直接与Calendar.MONDAY等进行比较。请参阅下面的代码

另外,如果是其他的话,我已将括号括起来。不要依赖缩进代码流,即使你的if-else只有一个语句,也要明确地添加括号。

    public static void main(String[] args) {

    String weekDay = "";

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

    if (Calendar.MONDAY == dayOfWeek) {
        weekDay = "monday";
    } else if (Calendar.TUESDAY == dayOfWeek) {
        weekDay = "tuesday";
    } else if (Calendar.WEDNESDAY == dayOfWeek) {
        weekDay = "wednesday";
    } else if (Calendar.THURSDAY == dayOfWeek) {
        weekDay = "thursday";
    } else if (Calendar.FRIDAY == dayOfWeek) {
        weekDay = "friday";
    } else if (Calendar.SATURDAY == dayOfWeek) {
        weekDay = "saturday";
    } else if (Calendar.SUNDAY == dayOfWeek) {
        weekDay = "sunday";
    }

    System.out.println(weekDay);

}
另一答案

没有必要使用c.get

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

    if (Calendar.MONDAY == dayOfWeek) weekDay = "monday";
    else if (Calendar.TUESDAY == dayOfWeek) weekDay = "tuesday";
    else if (Calendar.WEDNESDAY == dayOfWeek) weekDay = "wednesday";
    else if (Calendar.THURSDAY == dayOfWeek) weekDay = "thursday";
    else if (Calendar.FRIDAY == dayOfWeek) weekDay = "friday";
    else if (Calendar.SATURDAY == dayOfWeek) weekDay = "saturday";
    else if (Calendar.SUNDAY == dayOfWeek) weekDay = "sunday";

    System.out.println(weekDay);

并输出:

thursday

如果您尝试使用此代码使用c.get打印值,则可以看到错误

    System.out.println(c.get(Calendar.MONDAY));
    System.out.println(c.get(Calendar.TUESDAY));
    System.out.println(c.get(Calendar.WEDNESDAY));
    System.out.println(c.get(Calendar.THURSDAY));
    System.out.println(c.get(Calendar.FRIDAY));
    System.out.println(c.get(Calendar.SATURDAY));
    System.out.println(c.get(Calendar.SUNDAY));

比如我得到:

7
33
3
15
227
5
2013

结果将是不正确的,在我的情况下,如果我使用你的代码,我将Sunday作为weekDay

另一答案

只需执行以下操作:

    Date date = new Date();
    CharSequence time = DateFormat.format("EEEE", date.getTime()); // gives like (Wednesday)
另一答案

试试这个

import java.text.DateFormatSymbols;
import java.util.Date;
...
String[] weekdays = new DateFormatSymbols().getWeekdays();
String[] month = new DateFormatSymbols().getMonths();
System.outprintln(weekdays[date.getDay()+1]+","+month[date.getMonth()]+" "+date.getDate());

以上是关于Android日历以字符串[复制]获取当前星期几的主要内容,如果未能解决你的问题,请参考以下文章

js实现日历可获得指定日期周数及星期几示例分享(js获取星期几)

实践js实现windows系统日历

Android中如何获取系统时间和日期,星期?

linux常见命令

如何在 jQuery 日历或 Angular Js 日历中将当前周末日期设置为默认日期。星期在星期日结束

怎么通过获取当前时间计算出下周第一天 下月第一天 ?