很多朋友在获取系统当前时间时,都会用到DateTime.LocalNow或DateTime.FixedLocalNow这两个非常非常相似的函数。
但是,因为实在太相似了,所以几乎每位朋友都会产生这样的疑问:这两个函数到底有啥差别啊?
首先,我们查一下官方的说明:
一脸懵逼啊!
啥叫:可能会在表达式的执行过程中返回不同值?能给个例子不?没个例子就是没感觉!对吗?
所以,为了方便大家理解,我决定造个例子——
首先,看DateTime.FixedLocalNow函数的解析,其中还有一句:“将不会随着连续调用而更改”。
所以,关键在于“连续调用”——这里面隐含2层意思:
1、连续,说明要有多次调用;
2、要在多次里体现不同的当前时间(LocalNow),那每次调用之间最好要有一定的间隔,否则系统内很快就全部运行完毕,可能就看不出差别。
在Power Query里,我们可以通过Function.InvokeAfter函数,实现对其他函数(或步骤/代码)隔一段时间(比如1秒)就调用一次。具体用法直接看下面的例子。
同时,结合List.Transform函数,我们就可以控制调用次数,并输出计算结果。
最终示例如下:
= List.Transform(
{1..5},
(s)=>Function.InvokeAfter(
()=>DateTime.FixedLocalNow(),
#duration(0,0,0,1)
)
)
显然,在多次调用的过程中,DateTime.FixedLocalNow()的结果是一样的。而对于DateTime.LocalNow()的连续调用,每次的结果就不一样了:
通过这个例子,大家能明确知道这两个函数的确是存在差异的。
但就我目前所碰到的实际工作情况,或朋友们所提的问题来说,暂时还没见到过有对当前时间(LocalNow)进行连续调用的要求——所以,除非特殊需要,两个函数随便用哪一个都可以。
真正碰到这种特殊的要求时,知道了这两者的差别,也就得心应手了。
本文分享自 Excel到PowerBI 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!