无法从String转换为Char

时间:2015-07-27 11:42:48

标签: c# wpf datetime

我试图拆分此字符串:2015-08-14 20:30:00

但编译器会显示以下消息:

  

无法从String转换为Char

这是我的代码:

string date = reader["date"].ToString().Split("-").ToString();

变量reader["date"]是一个对象,所以我必须将它转换为String。我想将内容分成另外三个变量,如下所示:

year: 2015
month: 08
day: 14

我做错了什么?

3 个答案:

答案 0 :(得分:6)

没有String.Split重载将字符串作为参数。这就是为什么它看起来最接近的重载char[],但它们之间没有隐含的对话。

var array = "2015-08-14 20:30:00".Split(new char[]{'-', ' '});

将返回

enter image description here

您可以使用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,因此您的单个数字月份和日期不会获得前导零。

在这种情况下,您可以选择使用ddMM 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("-");