来自字符串的 Java 星期几

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/7936264/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-30 22:05:25  来源:igfitidea点击:

Java day of the week from string

javadatecalendarsimpledateformatdayofweek

提问by out_sid3r

I have this simple code:

我有这个简单的代码:

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date = format.parse("2011-10-29");
calendar.setTime(date);
Log.d("Debug","Day of the week = "+(calendar.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY));

The 29th of October is a Saturday so why do I get false?

10 月 29 日是星期六,为什么我会出错?

采纳答案by Craigy

Here is an example of how this could happen...

这是一个如何发生这种情况的示例......

    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    Date date = null;
    try {
        date = format.parse("2011-10-29");
    } catch (ParseException e) {
        e.printStackTrace();
    }
    Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
    calendar.setTime(date);
    System.out.println("Day of the week = "
            + (calendar.get(Calendar.DAY_OF_WEEK)));
    System.out.println("Saturday? "
            + (calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY));

    try {
        date = format.parse("2011-10-29");
    } catch (ParseException e) {
        e.printStackTrace();
    }
    calendar = Calendar.getInstance(TimeZone.getTimeZone("PST"));
    calendar.setTime(date);
    System.out.println("Day of the week = "
            + (calendar.get(Calendar.DAY_OF_WEEK)));
    System.out.println("Saturday? "
            + (calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY));

which outputs

哪个输出

Day of the week = 7
Saturday? true
Day of the week = 6
Saturday? false

so yes, depending on what time zone you are in it will or will not be Saturday.

所以是的,取决于您所在的时区,周六会是或不会是周六。

回答by Kaleb Brasee

Getting true with the following code:

使用以下代码实现:

    try {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        Date date = format.parse("2011-10-29");
        Calendar cal = GregorianCalendar.getInstance();
        cal.setTime(date);
        System.out.println(cal.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY);
    }
    catch(Exception e) {
        e.printStackTrace();
    }

Maybe a locale setting?

也许是语言环境设置?