我已经存储了出生日期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);
我收到了错误消息。请提出解决方案。提前谢谢。
答案 0 :(得分:5)
你可以试试这个
string [] date = dateOfbirth.Split('-');
string year = date[0];
string month = date[1];
string day = date[2];
答案 1 :(得分: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 :使用自定义日期格式将Parse
更改为ParseExact
答案 2 :(得分:2)
我希望这会有所帮助:
string st= "1989-8-15"; /
string st = (string)(DataBinder.Eval(e.Item.DataItem, "dob"));
string [] stArr = st.Split('-');
所以,你现在有一个带有dob项目的数组。
答案 3 :(得分: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('-')
可能会更好地解决您的问题。
答案 4 :(得分: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);
}