将丑陋的字符串转换为日期

时间:2017-05-10 21:53:41

标签: sas

我在数据集中有一些日期时间作为丑陋的字符串。

示例:" 2017年1月14日星期六00:00:00"

我想将此转换为日期,例如2017JAN14

任何更简单的解决方案然后沿着正则表达式路线走?

1 个答案:

答案 0 :(得分:2)

如果你想要yyyymmmdd,那么你需要创建自己的格式才能做到这一点,但你对内置的内容感到满意,那么下面应该做。只需跳过一周中的某一天,然后使用信息转换其余部分:

data _null_;
mytxtdate = "Saturday 14 Jan 2017 00:00:00";
mydate = input(compress(substr(mytxtdate,index(mytxtdate,' '))),date9.);
format mydate yymmdd10.;
put _all_;
run;

这当然很尴尬。我有兴趣知道是否有一种方法可以使用少于4个数据步长函数作为单行。这里的逻辑是:

  • 使用index跳至第一个空格。
  • 使用substrcompress
  • 从该点开始删除字符串中的所有空格
  • 使用date9.信息作为SAS日期输入,该信息仅查看结果字符串的前9个字符,忽略其余字符。