Ruby技术问题:如何将字符串20170319转为日期格式并获取年内天数
Ruby实现:将YYYYMMDD格式字符串转为一年中的第几天
刚好我之前处理过类似需求,Ruby的标准库已经帮我们把大部分工作做好了,分两步就能搞定:先把字符串解析成Date对象,再调用内置方法直接获取一年中的第几天。
具体实现方案
方法一:用Date.strptime(推荐,格式更严谨)
对于固定格式的日期字符串,strptime可以明确指定解析规则,避免自动解析可能出现的歧义,是更稳妥的选择:
# 先引入Ruby的日期标准库 require 'date' # 你的目标日期字符串 date_str = "20170319" # 按YYYYMMDD的格式解析成Date对象 date = Date.strptime(date_str, "%Y%m%d") # 调用yday方法获取一年中的第几天 day_of_year = date.yday puts day_of_year # 输出结果:78
方法二:用Date.parse(简单快捷,适合标准格式)
如果你的日期字符串是Ruby能自动识别的标准格式,parse方法可以一步到位,代码更简洁:
require 'date' date_str = "20170319" date = Date.parse(date_str) day_of_year = date.yday puts day_of_year # 同样输出:78
小提醒
- 一定要记得引入
date库,Ruby默认不会自动加载这个标准库 yday方法返回的是从1开始计数的整数,比如1月1日返回1,闰年的12月31日会返回366
内容的提问来源于stack exchange,提问作者one plus
相关产品推荐
相关产品推荐

