2000年至今的天数
看起来,这块积木好像没有什么用,2000年还是固定的一个值,不能输入。点一下它,可以看到返回了一个小数位数特别多的数。
但实际上,这块积木有着非常多的作用。在很多自制积木包中都用到了这块积木。下面,我演示这块积木的作用。
1.计算精确的时间(时、分、秒、毫秒等)
公式如下:
[2000年至今的天数×单位大一级与天的进率-向下取整 (2000年至今的天数×单位大一级与天的进率)]×单位与大一级的单位的进率
是不是有一点难理解,没关系,让我们看一个示例。
我们要求精确的秒,比秒大一级的单位是分,分与秒的进率是60,分与天的进率是1440(24×60),那么,代入公式,就变成了下面这样。
和当前时间的秒做对比,可以看到确实更精确。原理就是先算出过的秒数,(向下取整得到小数部分)再乘60就得到精确的秒数。不过有一点要注意,精确的时间就已经包含了下一级的时间了,所以不能又精确分又精确秒,这样是不正确的,所以建议只精确在最后一位。
2.永不停止
众所周知,Scratch3中的计时器每次点绿旗时都会归零,不管有没有运行计时器归零这块积木。但是2000年至今的天数不会,它永远不会停止,关闭作品再打开也没有影响,还可以跨作品连接。并且精度超级高。经本人测试,它可以精确到微秒,但没有到纳秒。公式如下:
2000年至今的天数×天与你想求的单位的进率
如果我们要求2000年至今的微秒数,就可以这样求:
2000年至今的微秒的计算公式(1000000是微秒与秒的进率)
另外,这块积木返回的是UTC标准时间,和北京时间有8小时时差(UTC+8),所以如果用它来计算时间,要加上8小时才能得出北京时间。
3.本人的设想
由于可以跨作品,所以可以做出这样一种程序:2000年至今的天数大于一个数字时,很多作品同时触发特定程序(比如跨年倒计时)
另外,我很好奇,如果把电脑的时间修改成小于2000年,这块积木会返回正数还是负数呢?