我有一个这样的日期时间变量:
DateTime date1 = DateTime.Now; // has 9.4.2014 01:12:35
我想将此分配给另一个日期时间或更改其值如下:
2014-04-09 13:12:35
我该怎么办? 感谢。
编辑:我不想要字符串变量。我想要它的日期时间格式。
答案 0 :(得分:5)
试试这个:
date1.ToString("yyyy-MM-dd HH:mm:ss")
另请参阅下表http://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx
正如乔恩所说(我没有提及):
你应该添加InvariantCulture
(如果你不希望它与当前的线程文化一起使用):
CultureInfo heIL = new CultureInfo("he-IL");
heIL.DateTimeFormat.Calendar = new HebrewCalendar();
CultureInfo dft = Thread.CurrentThread.CurrentCulture;
Thread.CurrentThread.CurrentCulture = heIL;
检查这些:
DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss",CultureInfo.InvariantCulture);
结果(我住在以色列):
תשע"ד-ח'-ט' 13:32:31
2014-04-09 13:32:31
答案 1 :(得分:2)
您编写的代码只是为变量赋值。它不会返回任何内容,并且它没有任何固有的字符串表示形式。 DateTime
值只是日期/时间。它可以以您想要的任何格式显示,但这不是变量值的一部分。
听起来您希望将其转换为特定格式的字符串,您应该使用DateTime.ToString
- 但在您确实需要的时候仅。尽量将值保持为DateTime
。通常,您只需要转换为字符串,以便向用户显示值,或者可能在JSON之类的内容中使用它。 (如果您发现自己将其转换为字符串以供数据库使用,那么您做错了 - 确保您的架构具有适合该字段的数据类型,使用参数化查询,并将参数值设置为{{1 - 也不需要格式化。)
您指定的格式看起来像是机器可读的格式而不是文化特定格式,所以我建议:
DateTime
通过指定不变文化,我们已经说过结果不应该依赖于当前的文化(否则它会) - 例如,如果当前文化使用不同的日历系统,这可能会产生很大的不同。
答案 2 :(得分:0)
类似下面的内容,它是DateTime
对象的构造函数之一:
d = new DateTime(2014, 5, 6, 5, 4, 30);
将d
设置为06/05/2014 05:04:30。它的参数按大小顺序递减,因此年,月,日,小时,分钟然后是秒。
如果您想按金额调整时间,请查看添加方法或TimeSpans
。
答案 3 :(得分:0)
你可以使用这样的东西格式化日期:
date1.ToString(“dd / MM / yyyy HH:mm:ss”)
使用“HH”代替“hh”,您将获得24小时的格式。
希望有所帮助。
答案 4 :(得分:0)
试试这个
DateTime date1 = DateTime.Now;
string datestring=date1.ToString("yyyy-MM-dd HH:mm:ss",CultureInfo.InvariantCulture)
http://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx
答案 5 :(得分:0)
作为猜测,"返回"您可以在调试时通过在IDE中调用变量来查看DateTime对象的值。
这只是调试器在内部调用DateTime对象的默认ToString()方法的另一种形式。价值是一样的。
请参阅:system.datetime
DateTime值及其字符串表示
在内部,所有DateTime值都表示为自0001年1月1日午夜12:00:00起已经过的刻度数(100纳秒间隔的数量)。实际的DateTime值与在用户界面元素中显示或写入文件时该值的显示方式无关。 DateTime值的出现是格式化操作的结果。格式化是将值转换为字符串表示形式的过程。
由于日期和时间值的出现取决于诸如文化,国际标准,应用程序要求和个人偏好等因素,因此DateTime结构通过其ToString的重载在格式化日期和时间值方面提供了极大的灵活性。方法。 默认的DateTime.ToString()方法使用当前文化的短日期和长时间模式返回日期和时间值的字符串表示。