【问题标题】:converting year-month-day to julian day [duplicate]将年月日转换为儒略日[重复]
【发布时间】:2020-11-23 16:01:50
【问题描述】:

我有一个包含格式数据的列表(年-月-日-hrmn-00S.GHTUJ_035)

2017-01-22-1522-00S.GHTUJ_035
2016-12-21-1725-00S.GHTUJ_035
2019-11-25-1123-00S.GHTUJ_035
2015-09-25-1329-00S.GHTUJ_035

现在我想将数据的year-month-day 部分转换为 julianday 并希望将其粘贴到其右侧。所以我的预期输出应该是

2017-01-22-1522-00S.GHTUJ_035   022
2016-12-21-1725-00S.GHTUJ_035   ...
2019-11-25-1123-00S.GHTUJ_035   329
2015-09-25-1329-00S.GHTUJ_035   ...

我只能编写脚本的一半,所以我需要专家的帮助。提前致谢。

while read line;
do
echo $line
done< list

【问题讨论】:

  • 您的标签中有 bash,但您可以使用其他工具吗?到目前为止,您尝试了什么来解释无效的日期?
  • 你能把它显示给我的数据吗
  • @tink 该链接用于获取 当前儒略日,而不是如何转换。
  • 请先生提出解决方案...
  • 您对Julian Day 或一年中的某一天感兴趣吗?

标签: linux bash shell loops julian-date


【解决方案1】:

datepart=${line%-[0-9][0-9][0-9][0-9]-00S*} 将为您提供字符串的日期部分,您可以使用 date +%j -d $datepart 将其转换为 julian。

${line%-[0-9][0-9][0-9][0-9]-00S*} 是 bash 语法,用于获取 $line 并从 - 中删除所有内容(这就是 % 的含义),四位数字,另一个 - 和 00S 直到末尾字符串(*)。

date -d 允许您指定执行操作的具体日期。 +%j 告诉 date 它应该给出什么输出。有关详细信息和更多选项,请参阅man dae。

【讨论】:

  • 这不是儒略日,而是一年中的一天
  • 在计算机编程中,儒略日期的含义有时会发生变化。儒略日期被认为是自特定年份开始以来经过的天数。顺便说一句,它与 OP 所需的输出完全匹配。日期使用字母j 表示这种格式并非巧合。
  • 好吧,我不知道!为在这里学到东西点赞
猜你喜欢
  • 2013-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-14
  • 2013-07-21
相关资源
最近更新 更多