使用top year将Stata中的两位数年份从字符串重新格式化为日期时间

使用top year将Stata中的两位数年份从字符串重新格式化为日期时间,stata,Stata,我理解要将字符串01-12-06和01-12-96翻译为Stata中的日期,您必须: 在掩码中指定假定前缀“DM20Y”和 添加可选参数topyear:clock(字符串、掩码、topyear) 因此,generate double timestamp=clock(timestr,“DMY”,2020)将两位数的年份06解释为2006年,因为2006年不超过2020年。两位数的96年将被解释为1996年,因为2096年确实超过了2020年 但是,我在实现这一点上遇到了困难。因此,我决定: g

我理解要将字符串01-12-06和01-12-96翻译为Stata中的日期,您必须:

  • 在掩码中指定假定前缀“DM20Y”和
  • 添加可选参数topyear:clock(字符串、掩码、topyear)
因此,
generate double timestamp=clock(timestr,“DMY”,2020)
将两位数的年份06解释为2006年,因为2006年不超过2020年。两位数的96年将被解释为1996年,因为2096年确实超过了2020年

但是,我在实现这一点上遇到了困难。因此,我决定:

g date = date(strdate, "MD20Y")
format date %td
然后我想基本上用前缀“19”替换大于2040的日期(因此2097变为1997;但2006保持为2006)

谁能告诉我怎么写那个条件语句吗?我总是出错

或者,反过来说,如何正确使用
topyar
功能?

函数
date()
根据字符串参数生成数字每日日期,并给出解释规则。它可以追溯到1995年Stata 4中最早引入日期功能的时候,当时每天的日期是唯一一种特别支持的日期,日历年被认为是不言自明的。现在同义词
daily()
可用,我建议可以也应该使用它,无论您的读者对Stata arcana的了解程度如何。否则,正如经常发生的那样,人们可能会开始猜测
date()
是一个通用函数,它根据用户的突发奇想生成其他类型的日期,这与所有相关文档相反

关于您的问题,我认为您需要进一步了解的是
daily()
date()
支持topyear规范。示例:

. di  %td daily("24 May 96", "DMY", 2050)
24may1996

. di %td daily("24 May 06", "DMY", 2050)
24may2006
元提示:我总是用
display
和一些我知道答案的具体例子来测试日期问题

Stata中的
help daily()
文档或函数
date()
根据字符串参数生成数字每日日期,并给出解释规则。它可以追溯到1995年Stata 4中最早引入日期功能的时候,当时每天的日期是唯一一种特别支持的日期,日历年被认为是不言自明的。现在同义词
daily()
可用,我建议可以也应该使用它,无论您的读者对Stata arcana的了解程度如何。否则,正如经常发生的那样,人们可能会开始猜测
date()
是一个通用函数,它根据用户的突发奇想生成其他类型的日期,这与所有相关文档相反

关于您的问题,我认为您需要进一步了解的是
daily()
date()
支持topyear规范。示例:

. di  %td daily("24 May 96", "DMY", 2050)
24may1996

. di %td daily("24 May 06", "DMY", 2050)
24may2006
元提示:我总是用
display
和一些我知道答案的具体例子来测试日期问题


Stata中的
help daily()
文档或是!非常感谢。太快了,是的!非常感谢。太快了。