我正在寻找一种方法/ npm包,可以实现以下功能:
- 月相
- SVG或任何图形表示的月相
- 该日期的照明
SunCalc.getMoonIllumination()
可以同时满足照明和相位,但判断是否是满月有些棘手,并且它没有图形表示。SunCalc.getMoonIllumination()
可以同时满足照明和相位,但判断是否是满月有些棘手,并且它没有图形表示。var date = new Date();
Math.round(SunCalc.getMoonIllumination(date).phase * 4) / 4;
如果您希望它仍然经过月相增减部分,并在大约一天内保持满月/新月/四分之一状态,可以将其舍入到最近的28日:
var date = new Date();
Math.round(SunCalc.getMoonIllumination(date).phase * 28) / 28;
最简单的解释是看一下 quarters 的例子。我们希望四舍五入后的数字能够与选项之一(0、0.25、0.5、0.75
)匹配。
由于 Math.round
是将数字四舍五入到最接近的整数,因此我们需要将结果转化为可进行四舍五入的整数。通过将它们乘以 4,我们得到:
0 * 4 = 0
0.25 * 4 = 1
0.5 * 4 = 2
0.75 * 4 = 3
在这两个端点之间的所有内容最终都会舍入到其中一个端点(除了一些舍入为5,我们需要自己处理)。
然后我们将结果除以相同的乘数,以使数字回到预期范围内。
现在28有效的原因有两个:
这意味着我们最终结果舍入到每个值大约需要一天的时间。