现在纽约时间是多少?
这个问题问的很好,可以检验一下知乎上的学霸们到底有多少是假学霸。 首先声明结论:如果单从计算角度来看(不讨论测量和时间系统的问题),任何能查到北京时间的人,都能很快算出现在的美国东部时间是什么时候,反之亦然。 现在中国用的是世界时(UTC)而不是北京时(BJT)作为标准的时间测量单位,即所谓的“北京时间”其实是东经120度的地方时,比格林威治时间(GMT)快8小时。而美国和加拿大都用西五区(Western 5)作为标准时,也就是比地球自转速度更快的太平洋时间(PST)和喜马拉雅时间(HST),太平洋时间和北京时间相差16个小时,而喜玛拉雅时间则较之再慢45分钟。
为了把问题简化,我们规定,当且仅当美国东部时间为A时,旧金山时间为B,而北京时间等于C(这里是为了方便给定三个简单整数表示三个时间点)。那么只要知道任意两个时间,就可以得到第三个;相反,先给定美国东部时间和北京时间中的一个,也可以很容易地通过计算得到另一个。因此从数学角度讲这是一个有解的问题,只要用计算机做一番简单的运算即可。 我在知乎上看过很多人秀自己的智商下限,都是“假设一个未知数然后解方程”的水平……真的不知道该怎么教你们才能学会……这个方程的解确实存在并且可以由程序求出来啊!
我给大家写出具体步骤: 第一步,根据给出的时间,利用地球自转运动方程,算出A、B、C各代表的时刻。 第二步,算出经过多少天以后A和B同时出现(或者A和C同时出现)。 第三步:按照“经过N天的日期加上1就是第N+1天的日期”的原则,把前一步中得到的时刻加1,就得到了需要求解的第3个时刻。 这整个算法的复杂度仅仅取决于求解非线性方程的精确度,跟待求解的数据量本身没有多少关系 (数据量只会影响计算的速度不是结果的准确性)。所以哪怕你是上千人的大公司老板也不用装自己不会编程来显示自己高贵冷艳的身份——如果你连这一步都不会写的话。 注意这里我们并没有考虑日月食等情形,因为这些问题都比较复杂而且没有统一解。