我试图拆分此字符串:2015-08-14 20:30:00
但编译器会显示以下消息:
无法从String转换为Char
这是我的代码:
string date = reader["date"].ToString().Split("-").ToString();
变量reader["date"]
是一个对象,所以我必须将它转换为String。我想将内容分成另外三个变量,如下所示:
year: 2015
month: 08
day: 14
我做错了什么?
答案 0 :(得分:6)
没有String.Split
重载将字符串作为参数。这就是为什么它看起来最接近的重载char[]
,但它们之间没有隐含的对话。
var array = "2015-08-14 20:30:00".Split(new char[]{'-', ' '});
将返回
您可以使用array[0]
,array[1]
和array[2]
来获取这些内容。
您也可以使用将您的字符串解析为DateTime
而不是(您的字符串有效)将其拆分为;
string s = "2015-08-14 20:30:00";
DateTime dt;
if(DateTime.TryParseExact(s, "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture,
DateTimeStyles.None, out dt))
{
// dt.Year;
// dt.Month;
// dy.Day;
}
但由于这些属性为int
,因此您的单个数字月份和日期不会获得前导零。
在这种情况下,您可以选择使用dd
和MM
custom date and time format specifiers。
答案 1 :(得分:3)
有时候应该考虑不同的方法。如果您的reader字段数据类型是date或datetime,那么使用正确的数据类型是处理此信息的正确方法。已经完成了DateTime。
DateTime dt = Convert.ToDateTime(reader["date"]);
int year = dt.Year;
int month = dt.Month;
int day = dt.Day;
答案 2 :(得分:0)
当String.Split
重新计算一个字符串数组时,您需要date
相同。所以简单地写一下
string[] date = Convert.ToString(reader["date"]).Split("-");