当前位置: 首页 > 面试题库 >

Java:从任何日期获取星期数?

柳英资
2023-03-14
问题内容

我有一个小程序,从今天开始显示当前的一周,像这样:

GregorianCalendar gc = new GregorianCalendar();
int day = 0;
gc.add(Calendar.DATE, day);

然后是显示周数的JLabel:

JLabel week = new JLabel("Week " + gc.get(Calendar.WEEK_OF_YEAR));

因此,现在我想拥有一个JTextField,您可以在其中输入日期,而JLabel将使用该日期的星期数进行更新。我真的不确定如何做到这一点,因为我是Java的新手。我需要将输入另存为字符串吗?一个整数?它将是什么格式(yyyyMMdd等)?如果有人可以帮助我,我将不胜感激!


问题答案:

我需要将输入另存为字符串吗? 一个整数?

使用a时JTextField,您从用户那里得到的输入是a
String,因为日期可以包含如.或的字符-,具体取决于您选择的日期格式。当然,您也可以使用一些更复杂的输入法,其中输入字段已经验证了日期格式,并返回了日,月和年的单独值,但是使用起来JTextField当然更容易。

它将是什么格式(yyyyMMdd等)?

这取决于您的要求。您可以使用SimpleDateFormat类来解析任何日期格式:

String input = "20130507";
String format = "yyyyMMdd";

SimpleDateFormat df = new SimpleDateFormat(format);
Date date = df.parse(input);

Calendar cal = Calendar.getInstance();
cal.setTime(date);
int week = cal.get(Calendar.WEEK_OF_YEAR);

但是您更可能希望使用特定于您的语言环境的日期格式:

import java.text.DateFormat;

DateFormat defaultFormat = DateFormat.getDateInstance();
Date date = defaultFormat.parse(input);

要提示用户使用哪种格式,您需要将强制DateFormat转换为SimpleDateFormat以获得模式字符串:

if (defaultFormat instanceof SimpleDateFormat) {
   SimpleDateFormat sdf = (SimpleDateFormat)defaultFormat;
   System.out.println("Use date format like: " + sdf.toPattern());
}

上面@adenoyelle的评论提醒我: 为您的日期解析代码编写单元测试



 类似资料:
  • 问题内容: 我有一个日期,以及如何使所有日期都落在给定日期所属的一周的Java中? 有人可以帮我这个吗。 我正在尝试获取给定日期的星期日期,我已经解释了为什么这个问题不是重复的,请在评论前阅读。 问题答案: 您可以尝试以下方式, 输出值

  • 问题内容: 我目前有此代码: 这是Date对象的扩展。 我需要做同样的事情,但是让日历返回我从星期一开始而不是星期日的一周中的几天。 问题答案: 您只需要使用iso8601日历获取一周中的第一天,其中第一个工作日为星期一,并添加0至6天。尝试这样:

  • 问题内容: 因此,对于一个开始日期和结束日期,我想确定在这两个日期之间发生的一周中的特定天数。 那么多少个星期一,星期二等 我知道我可以在“开始日期”和“结束日期”之间循环并每天检查一次,但是可能相差很多天。我更喜欢不需要循环的东西。有任何想法吗?(必须在SQL Server2005+中受支持) 问题答案: 鉴于我 认为 您正在尝试获得的结果,应该这样做:

  • 在评论中,这是我在ATM上的代码: Atm I有两个函数:一个可以将字符串转换为日历的星期数,另一个是我正在搜索的方法。目前它只处理今天的一周中的一天正确的,应该做的工作为一周中的每隔一天的部分是缺失的(评论与...)

  • 问题内容: 如何获取周六的日期。我今天有约会。 这该怎么做。 例如。今天是 我想输出为 问题答案: 如果您这样调用该函数,它将在下一个星期六返回: “ 6”来自您可以设置的可能值的列表。 您可以通过相应地更改第二个参数来获取星期几。 这是功能: [编辑] 这可能是另一种解决方案。这应该以任何语言工作:

  • 问题内容: 如何获得当前一周的星期一和星期五的日期? 我有以下代码,但是如果当前日期是星期日或星期六,则它将失败。 问题答案: 这些strtotime输入效果很好: 您需要做的就是将逻辑包装在一些if语句中。