2013-02-15 107 views
1

我正在使用vb.net 2010,我想提取当前年份的最后两位数字。
例如,2013应该返回13
我使用下面的代码:在vb.net上执行string.substring时出错

Dim sid_1 As String = Year(Now) 'or Year(Now).ToString 
sid_1 = sid_1.Substring(sid_1.Length, 2) 'highlighted error 

但它返回一个错误:

ArgumentOutOfRangeException was unhandled 
Index and length must refer to a location with the string. 
Parameter name: length 

回答

1

String.Substring()的第一个参数是函数开始获取的索引,它不可能是因为它已经超出了字符串的范围。

如果你只是想最后两位数字构成Date的一年String格式,我建议你这个代码,而不是:

sid_1 = Date.Now.ToString("yy") 

你可以看到在MSDN DocumentationDate.Tostring()方法的全部功能。

+0

谢谢@SysDragon。我将使用这个而不是子字符串。但我不能接受这个答案,因为我的问题标题是'substring'。这是我的错误,我希望你不介意。 – 2013-02-15 06:25:04

+0

@paynet当然,如果这可以解决您的问题:“当您确定哪个答案对您最有帮助时,通过单击答案左侧的复选框轮廓将其标记为接受的答案“。在[常见问题]上重写(http://stackoverflow.com/faq#howtoask)。 – SysDragon 2013-02-15 06:28:24

+0

你走了。 XD – 2013-02-15 06:29:40

1

这也许应该是:

sid_1.Substring(sid_1.Length - 2, 2) 
+0

谢谢@Mikhail – 2013-02-15 06:26:17

0

使用此:

DateTime dt = DateTime.Now; 
Console.WriteLine(dt.ToString("yy")); 
0

为什么SubString?只需简单地使用StartIndex = 2得到13:D

Dim sid_1 As String = Year(Now) 'or Year(Now).ToString 
    sid_1 = sid_1.Substring(2) 'highlighted error 
    MsgBox(sid_1.ToString())