如何将SQL日期转换为可读格式

时间:2013-07-04 16:35:36

标签: c# datetime

我已经为我的问题尝试了各种选项,但似乎没有一个对我有用。我在#中工作,并且数据类型为date的变量为{07/03/2013 17:27:02},现在我希望此日期显示为03-July-2013,但它似乎显示为07-March-2013

代码

DateTime publishDate = "07/03/2013 17:27:02"

string publish = publishDate.ToString("dd-MMM-yyyy")

Tried this too: String.Format("{0:MMM d, yyyy}", publishDate )

这就是我正在尝试的,我认为这将是非常简单的转换,但我很震惊。任何人都可以指出我正确的方向

5 个答案:

答案 0 :(得分:3)

以下是在C#

中将日期时间格式化为字符串的参考

http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx

你看起来需要String.Format(“{0:dd-MMMM-yyyy}”,publishDate)。

如果你的日期是3月而不是7月,那么看起来你的区域格式在某个地方是不正确的..那可能是个问题。

答案 1 :(得分:1)

使用“MMMM”显示月份的全名。

Console.Write(DateTime.Now.ToString("dd-MMMM-yyyy"));
// Result: 04-july-2013

答案 2 :(得分:1)

请改为尝试:

DateTime publishDate = DateTime.ParseEaxct("07/03/2013 17:27:02", 
                           "MM/dd/yyyy HH:mm:ss", CultureInfo.InvariantCulture);

string publish = publishDate.ToString("dd-MMMM-yyyy");

希望这能解决您的问题。

答案 3 :(得分:0)

由于您的日期是以月和日值反转输出的,我会考虑使用:

DateTime.ToString("dd-MMMM-yyyy, CultureInfo.InvariantCulture);

InvariantCulture不会考虑您的系统文化设置。

答案 4 :(得分:0)

您可以告诉数据库为每个日期或时间戳生成正确的格式。这可以避免客户端的任何转换错误。

这是Oracle的一些示例:

ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD';
ALTER SESSION SET NLS_TIME_FORMAT = 'HH24:MI:SS';
ALTER SESSION SET NLS_TIME_TZ_FORMAT = 'HH24:MI:SS TZH:TZM';
ALTER SESSION SET NLS_TIMESTAMP_FORMAT = 'YYYY-MM-DD HH24:MI:SS';
ALTER SESSION SET NLS_TIMESTAMP_TZ_FORMAT = 'YYYY-MM-DD HH24:MI:SS TZH:TZM';