try like this
private void Form1_Load(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt.Columns.Add("Date" );
dt.Columns.Add("DateObjectHide",typeof(DateTime));
dt.Rows.Add("27/01/2015");
dt.Rows.Add("27/01/2016");
dt.Rows.Add("27/01/2016");
dt.Rows.Add("27/01/2017");
dt.Rows.Add("27/01/2018");
dt.Rows.Add("27/01/2018");
dt.Rows.Add("27/01/2018");
dt.Rows.Add("27/02/2018");
dt.Rows.Add("27/02/2018");
dt.Rows.Add("27/03/2016");
dt.Rows.Add("27/04/2015");
dt.Rows.Add("27/04/2016");
dataGridView1.DataSource = dt;
dt.AsEnumerable().ToList().ForEach(k => k["DateObjectHide"] = DateTime.ParseExact(k["Date"].ToString(), "dd/MM/yyyy", CultureInfo.CurrentCulture));
dataGridView1.Columns["DateObjectHide"].Visible = false;
}
bool flag = false;
private void buttonSort_Click(object sender, EventArgs e)
{
if(flag)
this.dataGridView1.Sort(this.dataGridView1.Columns["DateObjectHide"], ListSortDirection.Ascending);
else
this.dataGridView1.Sort(this.dataGridView1.Columns["DateObjectHide"], ListSortDirection.Descending);
flag = !flag;
}