C# 反转时间和日期的位置

C# 反转时间和日期的位置,c#,sql,asp.net,datetime,C#,Sql,Asp.net,Datetime,如果我有一个日期时间标准(dd/MM/yyyy hh:MM:ss),是否有可能反转时间和日期的位置并获得hh:MM:ss dd/MM/yyyy 我试过了 var tempDate = date.ToString("hh:mm:ss dd/MM/yyyy"); date = Convert.ToDateTime(tempDate); 但我一直以第一种格式(dd/MM/yyyy hh:MM:ss)获取日期 新信息 根据与OP的对话,这里的动机是日期需要以特定格式显示在网格中。包含DateTime

如果我有一个日期时间标准(dd/MM/yyyy hh:MM:ss),是否有可能反转时间和日期的位置并获得hh:MM:ss dd/MM/yyyy

我试过了

var tempDate = date.ToString("hh:mm:ss dd/MM/yyyy");

date = Convert.ToDateTime(tempDate);

但我一直以第一种格式(dd/MM/yyyy hh:MM:ss)获取日期

新信息


根据与OP的对话,这里的动机是日期需要以特定格式显示在网格中。包含
DateTime
属性的模型是列表的一部分问题是,“如何使日期以特定格式显示在网格中?”

让我们来看看这个。这里有一个以特定格式显示为字符串的日期

var tempDate = date.ToString("hh:mm:ss dd/MM/yyyy");
这一点,我不知道为什么它在没有提供格式提供者的情况下为您工作

date = Convert.ToDateTime(tempDate);
这个程序对我不起作用(正如预期的那样!),因为我的线程(格式提供程序)的区域性没有对我从第1行收到的字符串的解析机制

var tempDate = DateTime.Now.ToString("hh:mm:ss dd/MM/yyyy");
Console.WriteLine(tempDate); // Prints the date
var date = Convert.ToDateTime(tempDate);  //ERROR !!!
Console.WriteLine(date);   
DateTime
不是以任何特定格式存储的。它是一种特殊的数据类型。您在屏幕上看到的是这种类型的字符串表示。此处
Console.WriteLine(日期),例如,
date
在默认的
ToString()
实现中使用其内部逻辑,使用当前线程的区域性转换为字符串。或者您可以使用
ToString(…)
参数化重载来获取特定格式,例如
“hh:mm:ss dd/mm/yyyy”
。但不可能将此格式存储在
DateTime
中。格式来自区域性,线程当前使用该区域性进行设置,除非指定该区域性。您可以尝试更改线程上的区域性,您将从
ToString()
中看到每个区域性的不同结果

要回答与OP的对话中提出的问题,您可以执行以下操作

//假设这是原始模型
公共类数据模型
{ 
//这里的其他财产
公共DateTime DateProperty{get;set;}
}
//创建显示模型
公共类显示模型
{
私有常量字符串_format=“hh:mm:ss dd/mm/yyyy”;
私有数据模型&u数据模型;
公共显示模型(数据模型数据模型)
{
_数据模型=数据模型;
}
//包装日期和时间
公共字符串DateProperty{get{return}dataModel.ToString(_format);}
//这里还有其他物业吗
}
无论用户界面需要什么,这都是可能的通用方法。但是,如果您提到的网格是
DataGridView
,则更简单的方法是在网格上设置属性

dataGrid.Columns[0].DefaultCellStyle.Format = "hh:mm:ss dd/MM/yyyy";

你一直用第一种格式是什么意思?哪里您是否在某处显示日期?我不明白你为什么对一个日期执行
.ToString()
,只是为了再次将其解析回
日期时间
。“但我一直以第一种格式获取日期(dd/MM/yyyy hh:MM:ss)。“不,你得到的是
DateTime
值。
DateTime
本身没有任何格式-就像
int
没有从十六进制还是十进制解析的概念一样。如果需要特定的字符串表示形式,请在需要时将其格式化。(我怀疑您想要
HH
而不是
HH
,因为目前上午8点和下午8点之间没有区别…)为什么要将字符串转换回日期
tempDate
应包含所需的结果-一个
DateTime
-对象不包括其输出格式。
DateTime
值没有格式。将
日期时间
转换为
字符串
时指定格式。因此,例如,如果我有一个带有日期时间的类,我无法直接打印该类,因为格式将始终为dd/MM/yyyy hh:MM:ss,对吗?更清楚地说,我使用剑道网格来显示值,但我想更改我解释过的datetime的格式。@RobNone你是说,一个具有
datetime
属性的类?当你说打印类时,你是什么意思?您的意思是在类中执行
返回MyProperty.ToString()
操作的
公共重写字符串ToString()
??如果您
ToString()
您的日期,您将获得当前线程的默认格式。如果使用
ToString(string)
将获得指定的格式。您可以使用“标准格式”,如
ToString(“g”)
。这些也是特定于区域性的。我将此DateTime作为类的属性,并且我有一个此对象的列表。当列表进入网格时,我需要以另一种格式显示日期时间。@RobNone在这种情况下,您需要使用此类的包装器,即代理或装饰器,在其中创建相同的属性并执行
get{return}innerClass.DateProperty.ToString(myFormat);}
…@RobNone我根据您提供给我的新信息更新了问题/答案