我已经为我的问题尝试了各种选项,但似乎没有一个对我有用。我在#中工作,并且数据类型为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 )
这就是我正在尝试的,我认为这将是非常简单的转换,但我很震惊。任何人都可以指出我正确的方向
答案 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';