1

我已经存储了出生日期 var char 格式:

示例:1989-8-15

我想从中找出子字符串,即我想要单独的年、月和日。我已经使用以下代码进行了尝试:

string dateOfbirth = (string)(DataBinder.Eval(e.Item.DataItem, "dob"));

int length = (dateOfbirth).Length;
int index1 = dateOfbirth.IndexOf('-');
int index2 = dateOfbirth.IndexOf('-', index1 + 1);
string year = dateOfbirth.Substring(0, index1);
string month = dateOfbirth.Substring(index+1, index2-1);
string day = dateOfbirth.Substring(index2, length);

我收到一个错误。请提出解决方案。提前致谢。

4

5 回答 5

5

你可以试试这个

string [] date = dateOfbirth.Split('-');
string year = date[0];
string month = date[1];
string day = date[2];
于 2013-06-26T09:58:11.407 回答
4
DateTime dob = DateTime.ParseExact("1989-8-15","yyyy-M-dd",null);
Console.WriteLine(dob.Year);
Console.WriteLine(dob.Month);
Console.WriteLine(dob.Day);

干净又容易。

UPD:更改ParseParseExact自定义日期格式

于 2013-06-26T09:58:45.600 回答
2

我希望这个能帮上忙:

string st= "1989-8-15"; / 
string st = (string)(DataBinder.Eval(e.Item.DataItem, "dob"));

string [] stArr = st.Split('-');

因此,您现在有了一个包含 dob 项的数组。

于 2013-06-26T10:02:16.537 回答
0

用于TryParseExact避免因文化设置不同而导致的异常

DateTime dateValue;
var dateString="1989-08-15";
if(DateTime.TryParseExact(dateString, "yyyy-MM-dd", CultureInfo.InvariantCulture,DateTimeStyles.None, out dateValue))
{
// parse successfull
Console.WriteLine(dateValue.Year);
Console.WriteLine(dateValue.Month);
Console.WriteLine(dateValue.Day);
}
于 2013-06-26T10:09:22.973 回答
0

要实际回答您的问题:

string dateOfbirth = "1989-8-15";

int length = (dateOfbirth).Length;
int index1 = dateOfbirth.IndexOf('-');
int index2 = dateOfbirth.IndexOf('-', index1 + 1);

string year = dateOfbirth.Substring(0, index1);
string month = dateOfbirth.Substring(index1 + 1, index2 - index1 - 1);
string day = dateOfbirth.Substring(index2 + 1, length - index2 - 1);

只需为Substring方法提供正确的参数即可。

不过,使用dateOfBirth.Split('-')可能会更好地解决您的问题。

于 2013-06-26T10:00:21.513 回答