当前位置: 首页 > 面试题库 >

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

田昊天
2023-03-14
问题内容

我的日期%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")

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


问题答案:

为什么不将时间存储为unixtime(即自1970年1月1日以来的毫秒数),如1388198714

试图将世界各地的所有日期格式解析为一击式bash脚本而没有合理依赖的要求,这有点荒谬。



 类似资料:
  • 问题内容: 我必须在Java中使用自定义日期格式。尽管Java不提供对微秒的支持,但它包含微秒。因此,我用零填充了时间模式,在格式化时它可以很好地工作,但是我无法使用该模式解析日期字符串。 有没有简单的解决方法,还是我必须自己处理微秒(使用String函数)? java.text.ParseException:无法解析的日期:“ 2010-01-25-12.40.35.769000” 问题答案:

  • 我想在Java中解析自定义的多种日期格式。这是我的代码 场景1:模式的顺序: yyMMdd'h'HH yyMMdd DateTimeFormatter-formatter=new DateTimeFormatterBuilder().appendOptional(模式的日期时间格式设置工具(“yyMMdd'h'HH”)).appddOptional(格式的日期时间格式化工具(“yyMMdd”).t

  • 在使用date格式自动设置为IE后,我试图解析某个包含日期条目为纪元数值的json文档。我需要不同的格式(也需要一毫秒) 所以问题是,如何解析IE。转换为带有Bson文档的某种自定义格式字符串。解析方法? 编辑:只是一个更新:问题在document.parse方法中,因为我不知道如何在解析json文档时使用tell.parse函数来使用自定义的日期格式。我总是得到某种默认的日期格式。如何发送给.p

  • 我想以yyyy-mm-dd格式存储今天的日期。在存储之前,我将今天的日期格式化,并再次解析格式化后的字符串。它以不同于我想要的格式给出了输出日期。我如何获得日期,将其格式化为' yyyy-mm-dd '并再次将其转换为日期,并希望输出格式为' yyyy-mm-dd '。请找到下面的代码,告诉我哪里错了 我得到的上述代码的输出是星期四 Mar 07 00:00:00 GMT 2013.但我希望输出为

  • 问题内容: 我正在寻找一个Java库,该库可以将字符串解析为POJO,而无需指定格式。我研究了POjava。还有其他类似的图书馆吗? 我发现以下具有相同问题的Java链接智能日期/时间解析器,但不是非常有用的答案。Joda或JChronic都不满足我的要求。如果我错了,请纠正我。 更新: 我说Joda不能解决我的目的的原因是,Joda希望将字符串解析为ISO8601格式或您指定的任何格式(例如“

  • 问题内容: 我正在尝试使用日期格式索引数据。如Elasticsearch 日期格式文档中所述,我需要使用自定义日期格式。我指的是DateTimeFormat文档,并且各自的格式是。 我能够创建映射,但是当我尝试索引数据时会给我错误。 对应: 索引文件: 错误:- 有什么建议吗? 问题答案: 本月使用三个“ M”。引用API文档: 月:3岁或以上,请使用文字,否则请使用数字。 因此,您提供的输入的正