我对Stata比较陌生。我有可变time
一个字符串,记录年份和月份的格式如下:Stata:将字符串转换为日期
2000m1
2000m2
2000m3
...
2015m12
我想首先创建一个日期变量,看起来相同(但必须是在日期格式)以上。其次,我想将年份和月份分成两个不同的变量,第三,我想将月份组件重命名为1月,2月等。
对于第一个任务,命令date = date(time, "YM")
返回一个空变量我无法弄清楚我做错了什么。
我对Stata比较陌生。我有可变time
一个字符串,记录年份和月份的格式如下:Stata:将字符串转换为日期
2000m1
2000m2
2000m3
...
2015m12
我想首先创建一个日期变量,看起来相同(但必须是在日期格式)以上。其次,我想将年份和月份分成两个不同的变量,第三,我想将月份组件重命名为1月,2月等。
对于第一个任务,命令date = date(time, "YM")
返回一个空变量我无法弄清楚我做错了什么。
功能date()
产量每天日期,不包月日期或任何其他类型的日期,是不是每天的日期。看到它的帮助(help date()
),它开始
date(s1,s2[,Y])
Description: the e_d date (days since 01jan1960) corresponding to s1
based on s2 and Y
s1 contains the date, recorded as a string, in virtually
any format. Months can be spelled out, abbreviated (to
three characters), or indicated as numbers; years can
include or exclude the century; blanks and punctuation are
allowed.
s2 is any permutation of M, D, and [##]Y, with their order
defining the order that month, day, and year occur in s1.
##, if specified, indicates the default century for
two-digit years in s1. For instance, s2="MD19Y" would
translate s1="11/15/91" as 15nov1991.
在本质上,它需要一天,一个月,一年,被告知。你提供了一个月和一年,而date()
不会(不能)发挥。
正如在同一地方记录的那样,daily()
是同一功能的同义词,它是一种很好的习惯,可以用它来提醒自己(以及代码的读者)它的功能。
相应地,monthly()
提供了一种更简单的解决方案,可以根据字符串输入创建月度日期,而不是您自己的答案。尝试使用display
(允许使用di
)的解决方案,在您知道正确答案的简单案例中。
. di monthly("2000m1", "YM")
480
. di %tm monthly("2000m1", "YM")
2000m1
阅读文档至关重要。请参阅help datetime
开始。有很多解释,日期有很多不同的形式,但都记录在案。
另请参阅help datetime_display_formats
了解如何以不同方式显示日期。 (在这里没有“重命名”。)例如,
. di %tmMonth_CCYY monthly("2000m1", "YM")
January 2000
试试这个代码可以是你的作品
string Date1 = String.Format("{0}", Request.Form["date"]);
string Date2 = String.Format("{0}", Request.Form["date1"]);
Date1 = DateTime.Parse(Date1).ToString("yyyy-MM-dd");
Date2 = DateTime.Parse(Date2).ToString("yyyy-MM-dd");
谢谢,但“命令字符串无法识别”是我输入第一条命令时得到的错误。 – firemind
将此字符串替换为字符串名称 –
这不是Stata语法。对于OP或任何其他人来说,它可能是也可能不是一个好的选择,但解释使用什么语言是至关重要的。 –
我想通了第一部分。我张贴的答案,这里任何人谁需要一个参考:
gen date = ym(real(substr(time, 1,4)),real(substr(time,6,2)))
format date %tm
我在这里逆转了downvote。这在我看来并不是最好的答案(使用'monthly()'要简单得多),但这是一个正确的答案。 –
这里引用了什么是一个命令不是一个完整的命令:大概是一个启动'产生'的意图。 –
有人猜测,因为downvoters没有解释,downvoting反映了明显无法公正地阅读文档的判断。 (SO不作为初学者的论坛,但对于专业和发烧友程序员来说,阅读文档是最低要求。) –