1.比普通公式更简单
日期具有年,月,周,日,时,分,秒,毫秒等状态。还需要能以任何单位对状态进行移动和设置。还需要能计算差值等。用普通的函数实现这些功能,写起来会非常复杂,也不易读懂。
例如:A1格是一个日期,B1格希望是 1年,1月,1日,1时,1分,1秒之后的日期,就需要写成
Date.addYear(Date.addMonth(Date.addDay(
Date.addHour(Date.addMinute(Date.addSecond(A1,1),1),1),1),1))
为了解决这个问题,我们认为日期是一个具有状态和操作的整体,可以在后面用 小圆点 提示出状态(成员属性)和行为(成员函数)。
因为多数修改状态的日期成员函数,返回的是日期本身。这样就可以一口气写下去了。
如上例B1格的值就是:
//A1的日期往后推1年,1月,1日,1时,1分,1秒之后的日期。
=A1.addYear(1).addMonth(1).addDay(1)
.addHour(1).addMinute(1).addSecond(1)
/*当前时间的时分秒毫秒都设置为0,也是Date.today().*/
=Date.now().setHour(0).setMinute(0).setSencond(0).setMilliSecond(0)//
2.对象公式的输入过程
输入=Date.
=Date.now()
继续输入小圆点,选择日期对象的属性或者函数。
=Date.now().minute
如果选择其他属性,那么就能得到其他属性了。例如:
-
=Date.now().year
:当前年数 -
=Date.now().hour
:当前小时数 -
=Date.now().second
:当前秒数
3.日期对象可以从哪里拿
-
返回值是日期类型的静态函数。
-
Date.today()
返回表示今天零点的日期对象。 -
Date.now()
返回表示当前时间的日期对象。 -
Date.parseDate("2014-10-13")
返回表示2014年10月13日的日期对象。
-
-
返回值是日期类型的成员函数(所有修改自身状态的成员函数都是返回修改后的日期)。
-
Date.today().addDay(1)
返回昨天的日期对象。 -
Date.today().setDay(1).addHour(1)
返回当月1号,1点的日期对象。
-
-
数据类型为日期类型的单元格引用。
例如单元格A1值为:
=Date.parseDate("2018-07-07")
。
系统会自动设置A1的 数据类型 是 日期,这表示A1是个日期对象。
那么输入=A1.
就能得到日期的成员属性和函数的提示了。例如,可以设置A2格的值为=A1.addYear(1)
,就得到2019年的7月7日的日期对象。
这意味着可以用单元格来存储日期,把复杂的计算拆成多步
- 数据类型为日期类型的页面数据。
例如在页面数据中定义页面数据 “昨天”:(页面数据名可以用中文,当然叫yestoday也可以)
- 输入公式
=昨天.
可以看到提示。 -
=昨天.day
:昨天是这个月的第几天。 -
=昨天.month
:昨天是今年的第几月。 -
=昨天.setHour(10).setMinute(10).setSecond(10)
:表示昨天10点10分10秒的日期对象。
5.日期对象相关公式介绍
日期对象的状态(成员属性)包括 :
-
year
:年 -
month
:月, -
week
:周, -
day
: 日, -
hour
:时, -
minute
:分, -
second
:秒, -
milliSecond
:毫秒。
日期对象的行为(成员函数)包括:
- 加上若干 年/月/日/时/分/秒/毫秒。 如
addYear(10)
,addMonth(-1)
,addDay(10)
等。 - 把年/月/日/时/分/秒/毫秒设置为n。如
setYear(2020)
,setDay(1)
等。 - 设置日期为某周/月/季度/年 的 开始/结束。
weekBegin()
,weekEnd()
,monthBegin
,monthEnd()
,quaterBegin()
,quaterEnd()
等。 - 获得该月有几天,该年有几天。
daysInWeek
,daysInYear