【发布时间】:2016-09-21 18:25:11
【问题描述】:
如何将 javascript 等效的算法转换为将 YYYYMMDD 转换为 MJD 修改的 julan day 到 bash 脚本这里是 javascript 代码
function YMDtoMJD (year, month, day)
{
var year;
var monthi
var day;
var yr = Math.floor (year);
var mn = Math.floor (month);
var day = Math.floor (day);
var hr = 0.0; // Hours are not valid
var L;
var julian;
var mjd;
// In leap years, -1 for Jan, Feb, else 0
L = Math.ceil ((mn - 14) / 12);
var p1 = day - 32075 + Math.floor (1461 * (yr + 4800 + L) / 4);
var p2 = Math.floor (367 * (mn - 2 - L * 12) / 12);
var p3 = 3 * Math.floor (Math.floor ((yr + 4900 + L) / 100) / 4);
julian = p1 + p2 - p3;
julian = julian + (hr / 24.0) - 0.5;
mjd = julian - 2400000.5;
return (mjd);
}
我在 bash 脚本中尝试过,但卡在了中间
#!/bin/bash
#clear
mn=12
Yr=2014
Dd=23
L=`ceil $((($mn-14)/12))`
p1=$(($Dd-32075+`floor $(((1461*(($Yr+4800+$L)/4))))`))
请帮我把它转换成 bash 下面是我正在使用的 floor 和 ceil 函数
floor_val=
function floor() {
float_in=$1
floor_val=${float_in/.*}
}
float_val=$1
floor $float_val
echo $floor_val
ceil_val=
function ceiling() {
float_in=$1
ceil_val=${float_in/.*}
ceil_val=$((ceil_val+1))
}
float_val=$1
ceiling $float_val
echo $ceil_val
【问题讨论】:
-
bash中没有floor命令。 -
但是你不需要它,因为
bash算术只是整数。分区总是返回地板。