用Ruby解析日期
如何将格式化日期(如1990年11月7日)转换为19900711?一个正则表达式和一些替换?您可以使用一种更有效的方法,如用Ruby解析日期,ruby,Ruby,如何将格式化日期(如1990年11月7日)转换为19900711?一个正则表达式和一些替换?您可以使用一种更有效的方法,如dateVar.gsub(“/”,“”)。当然,为存储日期的变量替换dateVar。时间类是您的朋友: 1.9.2p290 :002 > puts Time.parse('07/11/1990').strftime("%Y%d%m") --> 19900711 不过,您可能需要需要“时间”才能使其正常工作。有关输出格式的更多信息,请参见字符串格式时间 requ
dateVar.gsub(“/”,“”)
。当然,为存储日期的变量替换dateVar。时间类是您的朋友:
1.9.2p290 :002 > puts Time.parse('07/11/1990').strftime("%Y%d%m")
--> 19900711
不过,您可能需要需要“时间”
才能使其正常工作。有关输出格式的更多信息,请参见字符串格式时间
require 'date'
DateTime.strptime('07/11/1990', '%m/%d/%Y').strftime('%Y%m%d')
对我有用。可能重复OP的可能重复不仅仅是删除
/
,他们还在重新排序编号。我认为这只适用于最新版本的ruby,不是吗?我接触过的每个ruby版本都有时间,可以追溯到1.8。5@Eugene我在ruby的文档中找不到Time.parse。你有链接吗?我的问题是:不建议指定给定给parse方法的格式以避免%d%m%Y(欧洲格式)和%m%d%Y(美国格式)之间的混淆吗?Time从Date类继承了一些方法,parse就是其中之一。检查日期文档中的解析方法。据我所知,没有办法改变它解析为的日期。如果您关心的话,您必须在输入进入解析之前对其进行清理。US格式是默认格式,但是您也可以更具体地指定日期。例如,Time.parse(“1990年7月11日”)或Time.parse(“1990年11月7日”)也有效。在解析时间之前,您只需要清理输入并进行一些转换。此行为看起来还与运行Ruby的机器的区域设置有关。我有一些朋友在英国测试这个,他们返回的格式是欧洲格式。Ruby源代码没有指出强制一种格式优于另一种格式的方法,但这仍然需要通过输入清理来完成。这也可以工作,这个日期方法和上面的时间方法之间有什么大的区别?我想strtime有更多的控制权。例如>Time.parse('07111990')失败,但是>DateTime.strtime('07111990','%m%d%Y')仍然有效。但只要Time.parse起作用,这可能是一种更简洁的编码方式。@585connor:strptime的strptime
方法允许您指定日期格式,并且,考虑到正在使用的各种日期格式,这可能比猜测更好。奥托,我什么都用。。。