C# 日期时间格式小时加1

C# 日期时间格式小时加1,c#,datetime,datagridview,formatting,C#,Datetime,Datagridview,Formatting,我正在使用DataGridView,我有一个日期时间列的格式,如下所示 dataGridView1.Columns["Date"].DefaultCellStyle.Format = "MM\\/dd @ hh:mm tt"; 我想更改格式,使其生成类似于07/31 11->12的内容。11为当前小时,12为下一小时。我试过做hh+1和{hh+1}。有什么方法可以这样格式化它吗?或者我可以用某种方式覆盖“Date”列的呈现,但仍然将其类型保持为DateTime 如果可以在绑定前编辑字段,则可以

我正在使用DataGridView,我有一个日期时间列的格式,如下所示

dataGridView1.Columns["Date"].DefaultCellStyle.Format = "MM\\/dd @ hh:mm tt";

我想更改格式,使其生成类似于
07/31 11->12
的内容。11为当前小时,12为下一小时。我试过做
hh+1
{hh+1}
。有什么方法可以这样格式化它吗?或者我可以用某种方式覆盖
“Date”
列的呈现,但仍然将其类型保持为
DateTime

如果可以在绑定前编辑字段,则可以通过这种方式获得所需内容

  var date = DateTime.Now;

  var customDate = string.Format("{0}->{1}", date.ToString("MM\\/dd hh"), date.AddHours(1).ToString("hh"));
  Console.WriteLine(customDate);
输出07/31 03->04

public class SpecialDateConverter : IValueConverter
{
    public object Convert(
        object value,
        Type targetType,
        object parameter,
        CultureInfo culture)
    {
       var date = (DateTime)value;
       return string.Format("{0}->{1}", date.ToString("MM\\/dd hh"), date.AddHours(1).ToString("hh"));
    }

    public object ConvertBack(
        object value, 
        Type targetType, 
        object parameter, CultureInfo culture)
    {
        throw new NotSupportedException();
    }
}

我看不到任何定制日期时间的方法来生成输出。另一个日期列会不会太麻烦?也许在绑定到datagridview之前编辑时间源?答案很好。我认为答案的另一部分是,您不能保留此自定义字符串并将其保留为DateTime对象。创建转换器函数在自定义字符串和有效日期时间之间无需来回跳转可能是有意义的。这对我正在使用的应用程序不起作用。这需要在DataGridView上完成,我想保留列的原始DateTime值。@druciferre您使用的是什么类型的应用程序框架?您可能希望按照Shawn在其评论中的建议进行操作,并在可能的情况下使用IValueConverter。我继续添加了一个使用IValueConverter的示例。IValueConverter看起来很有希望,但如何将其实现为DataGridView格式?