【问题标题】:How to find which day of the week it is - Java [duplicate]如何找到一周中的哪一天-Java [重复]
【发布时间】:2013-08-20 10:47:51
【问题描述】:

还有一些其他问题几乎相同,但我似乎无法让我的代码工作。我得到了生日 dd/mm/yyyy 的用户输入。顺便说一句,我忽略了闰年。我试图确定用户出生时是一周中的哪一天。我必须确定他们从某个特定日期出生多少天,在这种情况下是 1901 年 1 月 1 日星期二。这就是为什么我做了year-1901

天=int day;

使用开关来确定每个月有多少天,由dayMonth 表示 所以七月有 31,二月有 28 等等。

年份=int year;

String[] days =
         {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};
howManyDays = ((year-1901)*365 + dayMonth + day - 1);       
whatDay = (howManyDays%7);
days[whatDay]

它有时有效,但有时却无效。 任何帮助表示赞赏,如果有任何问题随时提出。在此先感谢,希望它有意义!

【问题讨论】:

标签: java date


【解决方案1】:

您可以使用 Java 日历。

Calendar c = Calendar.getInstance();
c.set(year, month, day);

int day_of_week = c.get(Calendar.DAY_OF_WEEK);

这会给你一个 int 星期几,你可以只提供一个数组来映射日期的“名称”。

【讨论】:

  • 我可以用c.set(2012, 03, 22); 代替c.set(year, month, day) 或类似的东西吗?
  • 当然 :) 这只是一个示例,我对其进行了编辑以使其清楚。
  • 仅供参考,非常麻烦的旧日期时间类,如 java.util.Datejava.util.Calendarjava.text.SimpleDateFormat 现在是 legacy,被 Java 8 中内置的 java.time 类所取代,之后。见Tutorial by Oracle
【解决方案2】:

您使用的代码无法在任何标准日期操作中实现,因为有很多情况,如闰年等。

尝试使用 java.util.Calendar 进行需要了解星期、月份等详细信息的日期操作。

对于更复杂的日期函数,请使用 JODA Calendar。 Joda Calendar 速度很快,并且有很多操作,例如两天之间的天数等。您可以查看上面的链接了解更多详细信息。

现在你可以使用这个

     Calendar calendar = Calendar.getInstance();
     calendar.set(year, month, date) ;
     int i=calendar.get(Calendar.DAY_OF_WEEK);

这里 i 的值是从 1 到 7 的星期日到星期六。

【讨论】:

  • 月份会是-1 吗?所以如果我想进入七月,我必须放6?还是我会放 7 个?
  • @Dileep 链接指向google,可能失效。
  • @RomanC 感谢您的来信。
  • @EthanEdwards 月份为 0-11,周日至周六为 1-7
  • Dileep @RedSonja 当我设置 calendar.set(2019, 9, 10) ;你能帮我解释一下为什么它返回 5 而不是 3。9 月 10 日是星期二。
猜你喜欢
  • 2012-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-20
  • 1970-01-01
相关资源
最近更新 更多