首页 > 解决方案 > 如何使用 Locale 和 GregorianCalendar 在 Java 中以给定语言获取工作日名称?

问题描述

我在一个练习中遇到了一些严重的困难,我要编写一个简单的程序,该程序将给出工作日名称(不是 int 值)作为输出。更重要的是,它应该是从当前日期起 90 天后的工作日,并且应该以当地语言(丹麦语)显示。

我是一个初学者,正在寻求关于我应该如何做到这一点的提示。

练习的重要部分是我不能使用比导入的类更多的类(见下面的代码)。

我自己发现的是如何获取当前日期并将其显示为工作日(我知道它从周日开始从 1 开始计数),但我不知道如何强制它以当地语言将此整数显示为工作日名称.

    package days01;

import java.text.SimpleDateFormat;
import java.util.Scanner;
import java.util.Locale;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Calendar;

public class Dates {
   public static void main(String[] argv) {
      Calendar one = new GregorianCalendar();
      int day = one.get(Calendar.DAY_OF_WEEK);
      System.out.println(day);
   }
}

预期的输出应该是从当前日期开始的单个工作日名称 90。

标签: javalocalesimpledateformatdayofweekgregorian-calendar

解决方案


如果您必须使用旧式 API,那么DateFormatSymbols检索日期名称很有用。

import java.text.DateFormatSymbols;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Locale;

public class DayNameExample {

   public static String getDayName(int day, Locale locale) {
      DateFormatSymbols symbols = new DateFormatSymbols(locale);
      String[] dayNames = symbols.getWeekdays();
      return dayNames[day];
    }

   public static void main(String[] args) {
      Calendar c = new GregorianCalendar();
      c.add(Calendar.DAY_OF_MONTH, 90);
      int dow = c.get(Calendar.DAY_OF_WEEK);

      System.out.println (DayNameExample.getDayName(dow, new Locale("da", "DK") ));

   }
}

推荐阅读