我有一些问题
1:如何将日期时间转换为像20180125这样的简单数字
2:我有一个datagridview,其中一列是Date,例如我希望从2015/02/31到2017/02/31搜索其他列(年龄)的最大值
在我看来,首先我搜索datetime值并获取rowIndex,然后通过诸如290 - 350之类的rowinder搜索其他列(年龄)中的最大值,或许更好的方法?喜欢直接使用datetimes var 如果我的问题不清楚,我会提供更多信息
string rowdate = Convert.ToString(startofMonth);
DateTime dt = DateTime.ParseExact(rowdate, "yyyyMMdd", CultureInfo.InvariantCulture);
String searchValue = "20180103"; //Datetime Example
int rowIndex = -1;
foreach (DataGridViewRow row in dgv.Rows)
{
if (row.Cells["date"].Value != null) // Need to check for null if new row is exposed
{
if (row.Cells["date"].Value.ToString().Equals(searchValue))
{
rowIndex = row.Index;
break;
}
}
}
textBox1.Text = Convert.ToString(rowIndex); //Show in textbox
}
答案 0 :(得分:1)
1:如何将日期时间转换为20180125这样的简单数字
=>您可以使用.ToString("format")
将DateTime转换为字符串
例如:
Console.Write(DateTime.Now.ToString("yyyyMMdd"));
2:您可以使用<比较2 DateTime
个值。和>运营商
根据您的屏幕截图在3月13日更新。 (您仍然需要进行验证和异常处理)
//set start and end date
DateTime fromThisDate = new DateTime(2015, 02, 21, 0, 0, 0);
DateTime toThisDate = new DateTime(2017, 02, 21, 0, 0, 0);
int indexOfMaximumAge = -1;
int currentMaximumAge = -1;
foreach (DataGridViewRow row in dgv.Rows)
{
if (row.Cells[1].Value != null) // Need to check for null if new row is exposed
{
//filter by date range
//convert
DateTime cellDate = Convert.ToDateTime(row.Cells[1].Value);
if ((cellDate > fromThisDate) & (cellDate < toThisDate))
{
//find max
//convert
int cellAge = Convert.ToInt16(row.Cells[3].Value);
if (cellAge > currentMaximumAge)
{
currentMaximumAge = cellAge;
indexOfMaximumAge = row.Index;
}
}
}
}