如何使用Locale和Gregorianalendar在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);
}
}
预期输出应该是从当前日期算起的一个工作日名称
# 1 楼答案
推荐的解决方案:java。时间
使用Rzwitserroot回答中的第一个片段
不鼓励的解决方法:照老师说的做
即使我们仅限于使用Java 1.0和1.1中设计拙劣、过时已久的类,也可以比其他答案稍微优雅一些。我正在使用臭名昭著的
SimpleDateFormat
类。那些在Stack Overflow上认识我的人可能会因为我发布了一个使用这个类的例子而憎恨我,我接受任何反对票今天(10月30日星期三)运行时的输出:
(指星期二。)
将时区传递给
GregorianCalendar
可以确保我们在该时区中获得今天的日期。在所有时区,日期都不一样。在本例中,我们不需要指定区域设置,它控制新的一周从哪一天开始(因为我们遵循国际标准,所以在丹麦是星期一),我们在这里不使用,所以我只是做了适当的调整我重复一遍:不要在生产代码中使用这个。今天,我们有了更好的java。时间,现代Java日期和时间API
# 2 楼答案
如果必须使用旧式API,那么
DateFormatSymbols
对于检索日期名称很有用# 3 楼答案
这是一个过时的API;你应该改用
java.time
。如果你的课程材料强调了这一点,那。。只是把它变成了糟糕的课程材料。这个练习显然是为了教你熟悉这个特定的API这个API被淘汰的众多原因之一是它令人困惑且难以使用。所以,这没用
在新型API中,这非常非常简单:
在旧的里面,哦。让我们看看:
如果不使用新的API,你必须自己翻译,不能依赖系统为你翻译。它也都是基于int的,所以尝试调试主要是试图找出所有任意数字的含义
坚持使用新的API,即最重要的代码片段。干净多了