Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Ruby解析日期_Ruby - Fatal编程技术网

用Ruby解析日期

用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

如何将格式化日期(如1990年11月7日)转换为19900711?一个正则表达式和一些替换?

您可以使用一种更有效的方法,如
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
方法允许您指定日期格式,并且,考虑到正在使用的各种日期格式,这可能比猜测更好。奥托,我什么都用。。。