linux 定义时间格式,linux bash-以自定义格式解析日期

我的日期%c格式 (可以是其他任何 格式 )

,我需要在date命令中使用它。%c不是美国格式。它是德语服务器,因为它是德语服务器。这在美国服务器上也无法正常工作。(语言环境设置为德语或美国)

这不起作用(包括错误):

user@server:~$ NOW=$(date +%c); echo $NOW

Do 19 Dez 2013 22:33:28 CET

user@server:~$ date --date="$NOW" +%d/%m/%Y

date: ungültiges Datum „Do 19 Dez 2013 22:33:28 CET“

(日期:ungültigesDatum„ Do 19 Dez 2013 22:33:28 CET“ =date: invalid date „Do 19

Dez 2013 22:33:28 CET“)

困难在于我不知道以后将使用哪种语言环境,甚至不知道日期格式,因为用户可以设置自己的格式。因此,一个简单的特定解析解决方案就无法真正起作用!

但是我该怎么办呢?

概括问题:

如果我有一种日期格式format1 (可以是任意 日期 ,也可以是至少一种可以反转的 日期 )

,则可以使用date获得格式化日期。但是,如果我想将其格式化为另一个日期(format2),该怎么做?

使用除coreutils之外的任何方法的解决方案都是毫无意义的,因为我试图为尽可能多的unix机器开发bash脚本。

DATE=$(date "+$format1")

date --date="$DATE" "+$format2" # Error in most cases!

这是必需的,因为我有一个用户可以指定日期格式的命令。该日期字符串将被显示。但是在下一步中,我需要将此日期字符串转换为另一个固定的日期字符串。我可以操纵命令将获得的格式,也可以操纵输出

(或用户将看到的内容) 。

我不能两次运行该命令,因为它非常耗时。

更新:

我发现了类似的解决方案:

# Modify $user_format so it can be parsed later

user_format="$user_format %s"

# Time consuming command which will print a date in the given format

output=$(time_consuming_command params "$user_format" more params)

# This will only display what $user_format used to be

echo ${output% *}

# A simple unix timestamp parsing ("${output##* }" will only return the timestamp)

new_formated_date=$(date -d "1970-01-01 ${output##* } sec UTC" "+$new_format")

这是可行的,可能对其他人有帮助。因此,我将与您分享。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值