当我执行下面的代码时,我的日期格式为@model dynamic
,这正是我想要的。
但是当我在另一个服务器上执行相同的代码时,我的日期为04-07-2015
。为什么呢?
以下是我在pageload上的代码:
7/4/2015
答案 0 :(得分:5)
ToShortDateString
方法使用CurrentCulture
设置的ShortDatePattern
property。
可能您的服务器具有不同的区域设置,这就是为什么在运行此代码时,您会得到DateTime
的不同字符串表示形式。
如果您想在两台服务器中获得相同的表示,请在区域和语言设置中的两台服务器上设置相同的文化,或使用custom date and time format specifiers之类的;
TxtIndate.Value = DateTime.Now.ToString("dd-MM-yyyy");
或作为Matt mentioned的更好方式,使用InvariantCulture
字符串格式,如;
TxtIndate.Value = DateTime.Now.ToString("dd-MM-yyyy", CultureInfo.InvariantCulture );
答案 1 :(得分:1)
从c#代码来看,相同的代码似乎不可能产生两种不同的时间格式。所以据我所知,我们必须在其他地方找到它。
可能混淆的来源是HTML输出中两种不同类型的input
控件。一个type=text
,一个type=date
可以解释不同的格式,因为HTML 5日期控件呈现的方式不同。因此,一个日期是服务器格式化的值,另一个是浏览器,可能是客户端文化,格式化值。
答案 2 :(得分:1)
正如其他海报所说,这是由于不同的文化。
如果具有相同的日期格式很重要(警告,用户希望以他们习惯的文化形式查看日期),那么您始终可以明确地设置日期。
var myCultureDateFormat = new CultureInfo("en-US").DateTimeFormat;
// Short date string
var shortDate = DateTime.Now.ToString(myCultureDateFormat.ShortDatePattern);
// Long date string
var longDate = DateTime.Now.ToString(myCultureDateFormat.LongDatePattern);
快乐的编码!