You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中Calendar字段设置疑问:set方法指定周五规则及默认值

嘿,这个问题问到点子上了!作为天天跟Android Calendar打交道的开发者,我给你把这两个点讲明白:

一、调用set方法设置Calendar的日期字段为周五时的行为

当你执行calendar.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY)这类代码时,默认逻辑是把日期调整到「最近的周五」,具体分三种情况:

  • 如果当前日期本身就是周五,那Calendar的日期不会有任何变化;
  • 如果当前日期在周五之前(比如周三、周四),会自动跳到本周的周五(也就是即将到来的那个);
  • 如果当前日期在周五之后(比如周六、周日到下周四),会自动跳到上周的周五(已经过去的那个)。

要注意的是,这个「最近」的判断是基于Calendar实例当前的时区和时间基准的——如果你之前手动修改过时区或者时间,结果会跟着调整。

二、未设置Calendar年份或其他字段时的默认值

不管是通过Calendar.getInstance()还是直接实例化GregorianCalendar,只要你没有手动指定年份、月份等字段,所有字段都会默认使用设备当前的系统时间、时区和地区来初始化:

  • 年份:默认是当前系统的年份(比如2024年);
  • 月份:默认是当前系统的月份(敲黑板!Calendar的月份是从0开始的,1月对应0,12月对应11);
  • 日期、时分秒、毫秒:全部对应当前系统的实时时间值;
  • 时区:默认是设备的系统时区(比如Asia/Shanghai);
  • DAY_OF_WEEK这类计算型字段:会根据当前日期自动算出对应的星期几。

简单说,刚创建的Calendar实例,就是当前时间的「镜像」,所有字段都跟你手机状态栏显示的时间完全对应。

内容的提问来源于stack exchange,提问作者Omar Labib

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:19:47