Lua获取一年中的日数

我正在尝试编写一个脚本,使用以下公式确定星历:

a = 上一个闰年年份的简写(如果当年是闰年,则为4年前)
b = 366 + (365 * ((当年年份简写 - 1) - 上一个闰年年份的简写)
c = 年的第几天 - 月的第几天
d = 月的第几天
e = (每分钟的秒数 + (每小时的分钟数 * 60))/ 1440
f = 36525
星历 = ((a + b + c + d + e)/f)*100000

分离 x.y  x  y

如果世纪大于19,则在 x 的开始处添加 1- 并获取 y 的前两位数字

日期为 x.y

然而,我似乎无法找到获取 年的第几天 的方法。我目前的脚本是:

function isLeapYear(year)
  return year%4==0 and (year%100~=0 or year%400==0)
end

function lastLeapYear(year)
  if(isLeapYear(year))
    result = strsub(year,2,4) - 4
  else
    year = year - 1
    if(isLeapYear(year))
      result = strsub(year,2,4)
    else
      year = year - 1
      if(isLeapYear(year))
        result = strsub(year,2,4)
      else
        year = year - 1
        if(isLeapYear(year))
          result = strsub(year,2,4)
        else
          result = "Invalid"
        end
      end
    end
  end
  return result
end

function stardate()
  yearf = os.date("%Y")
  yearh = os.date("%y")

  a = lastLeapYear(yearf)
  b = (366 + (365 * (yearh - a)))
  c = (!!DayOfYear!! - os.date("%d"))
  d = os.date("%d")
  e = (os.date("%S") + (os.date("%M") * 60))/1440
  f = 36525
  st = ((a + b + c + d + e)/f)*100000
  !!Separate st into x and y!!

  if(strsub(yearf,0,2) > 19)
    diff = strsub(yearf,0,2) - 19

    lead = diff "-" lead
  end

  return lead.dec
end

如果我的代码中有任何其他错误,请指出,因为我几乎没有 Lua 经验。

点赞
用户88888888
用户88888888

任何找不到正确格式字符串的人可以在 http://docs.rainmeter.net/manual/measures/time 上找到比 http://www.lua.org/pil/22.1.html 更高级的列表(这是我正在查找的地方)。

2015-09-08 19:12:25
用户107090
用户107090

每年的天数可以通过os.date("*t").yday 或者 os.date("%j")来获得。

第一个表达式会返回一个数字;第二个表达式会返回一个字符串(可以通过 tonumber 显示转化为数字,或者在计算运算中隐式转化为数字)。

2015-09-09 00:57:27