我有一个日期格式为“12/23/2010”的文本字段。我在那里使用watin获取数字23,即从textfield获取数字;我将使用它。
1.Get datetime 12/23/2010 and get number '23'
2.substract 2 from 23 and store it somewhere[ie: 23 - 2 = 21]
3.Insert the new datetime number [ie:12/21/2010 ]
string myDate = browser.TextField(Find.ByName("myTextField")).Value;
DateTime time = = new DateTime();
time2 = time - 2;
browser.TextField(Find.ByName("myTextField")).TypeText(time2);
这可能吗?或者我应该采用其他方式。请用户插入数据。
答案 0 :(得分:5)
您应该使用DateTime.Parse
,DateTime.TryParse
,DateTime.ParseExact
或DateTime.TryParseExact
来解析文本到DateTime
。
如果解析失败表明代码中的某个地方出现了故障(这可能是这里的情况,考虑到这是一个测试),我怀疑DateTime.ParseExact
是最合适的方法,提供了预期的格式,文化等。
答案 1 :(得分:2)
如果你想要的是从日期减去2天,我会这样做:
DateTime dt = DateTime.Parse(myDate)-TimeSpan.FromDays(2);
//its steps 1,2 & 3 in one easy to read line :)
当然,如果您确定您拥有的字符串是有效日期。如果它可能不是,那么你应该做Skeet推荐的,首先使用try解析,检查返回值是否为true,如果是,则执行其余操作,如果不是,则发送错误消息。
答案 2 :(得分:0)
考虑写作
DateTime dt = Convert.ToDateTime(myDate);
DateTime dtNew = new DateTime(dt.Year, dt.Month, dt.Day - 2);
browser.TextField(Find.ByName("myTextField")).TypeText(dtNew.ToShortDateString());
答案 3 :(得分:0)
尝试将日期值作为字符串 将其转换为datetime并使用AddDays,我们可以使用负值或正值 并将其插入文本框
string myDate = this.Elements.textfield.Value;
DateTime dt = Convert.ToDateTime(myDate);
DateTime dtNew = dt.AddDays(-3);
this.Elements.ChangeDateActive.TypeText(dtNew.ToShortDateString());
感谢