技术是winforms,使用c#,数据库是SQlite。
我从DB获取值,将它们转换为列表,然后用这些列表填充列表视图。
我有两栏的日期。一个值的格式是年份和月份(YYYY),另一个是年份和周(YYYY)。
问题:
但是在列表视图中,这些值在它们之间以斜线显示,即2001年1月为2001年1月1日凌晨12:00。2002年的第31周为2002年3月1日凌晨12:00。
我不想要输出的时间或斜线。(前两个列表是listview中的输出,其中有前面提到的错误。第二列是数据的外观)。

问题是由引起的:我使用DateTime数据类型来存储这些列的值。是否有任何数据类型将只输出这些值的年度月和年度周格式,而不是显示斜杠和时间。如果我尝试使用int,这些列甚至不会被读取,所以不能使用。
代码:(只关注yyyymm部分)
string sql6 = "select YYMM, TotalTrans from t2 where cast(TotalTrans as int) < 1000";
SQLiteCommand command3 = new SQLiteCommand(sql6, sqlite_conn);
SQLiteDataReader reader3 = command3.ExecuteReader();
while (reader3.Read())
{
int TotalTrans;
DateTime yyyymm; //Right here:
if (DateTime.TryParse(reader3["YYMM"].ToString(), out yyyymm) && int.TryParse(reader3["TotalTrans"].ToString(), out TotalTrans))
{
YYMM.Add(yyyymm);
TotalTransIrregularities.Add(TotalTrans);
}
}发布于 2013-11-19 17:40:25
对于YYMM列,可以像使用一样使用DateTime。当以字符串的形式输出它时,应该使用yyyy-MM格式。
您的YYWW列更复杂,因为DateTime不支持几周的解析。我建议您创建自己的类型,并以ISO标准方式显示它,例如2002-W31。这种类型可能如下所示:
public struct YearWeek
{
private static readonly Regex parseRegex =
new Regex(@"^(?<year>\d{4})-W?(?<week>\d{2})$");
public int Year { get; private set; }
public int Week { get; private set; }
public YearWeek(int year, int week) : this()
{
this.Year = year;
this.Week = week;
}
public static bool TryParse(string s, out YearWeek result)
{
var match = parseRegex.Match(s);
if (match.Success)
{
result = new YearWeek(int.Parse(match.Groups["year"].Value),
int.Parse(match.Groups["week"].Value));
return true;
}
else
{
result = default(YearWeek);
return false;
}
}
public static YearWeek Parse(string s)
{
YearWeek result;
if (TryParse(s, out result))
return result;
else
throw new ArgumentException("s");
}
public override string ToString()
{
return string.Format("{0:0000}-W{1:00}", Year, Week);
}
}https://stackoverflow.com/questions/20078004
复制相似问题