java - 将字符串转换为星期几(不是确切日期)

标签 java date calendar simpledateformat dayofweek

我收到一个 String,它是一周中的某一天,例如周一。现在我想获取当天的常量整数表示,它在 java.util.Calendar 中使用。

我真的必须自己做 if(day.equalsIgnoreCase("Monday")){...}else if(...){...} 吗?有什么巧妙的方法吗?如果我挖掘 SimpleDateFormat 并将其与 Calendar 混合,我生成的行数几乎与输入丑陋的 if-else-to-infitity 语句一样多。

最佳答案

您可以使用 SimpleDateFormat 它也可以为特定的 Locale 解析日期

public class Main {

    private static int parseDayOfWeek(String day, Locale locale)
            throws ParseException {
        SimpleDateFormat dayFormat = new SimpleDateFormat("E", locale);
        Date date = dayFormat.parse(day);
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
        return dayOfWeek;
    }

    public static void main(String[] args) throws ParseException {
        int dayOfWeek = parseDayOfWeek("Sunday", Locale.US);
        System.out.println(dayOfWeek);

        dayOfWeek = parseDayOfWeek("Tue", Locale.US);
        System.out.println(dayOfWeek);

        dayOfWeek = parseDayOfWeek("Sonntag", Locale.GERMANY);
        System.out.println(dayOfWeek);
    }

}

关于java - 将字符串转换为星期几(不是确切日期),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18232340/

相关文章:

java - 如何在 Android 7.0 的微调器模式下修复 DatePickerDialog?

Android读取日历事件

java - 为什么需要动态绑定(bind)?

Javascript 日期似乎引用了不正确的 DST 开始/结束日期

c# - 一周中天数的系统常量 (7)

c# - 如何汇总数据库中给定日期的多个时间记录。错误 :Subquery returned more than 1 value

java - JSpinner : how to display both numbers and text?

尝试访问 S3 Bucket 时出现 javax.net.ssl.SSLPeerUnverifiedException

java - 如何防止在tomcat启动时初始化的类对数据库进行双重写入?

c# - 在文本框上单击,显示(弹出)日历?