服务器上的日期格式不同



当我执行下面的代码时,我得到的日期格式为04-07-2015,这是我想要的。

但是,当我在另一个服务器上执行相同的代码时,我得到的日期是7/4/2015。为什么?

这是我在页面加载上的代码:

protected void Page_Load(object sender, EventArgs e)
{
    if(!IsPostBack)
    {
        fillProject();
    }
    grdData.Visible = false;
    TxtIndate.Value = System.DateTime.Now.ToShortDateString();
    txtOutDate.Value = System.DateTime.Now.ToShortDateString();
}

ToShortDateString方法使用CurrentCulture设置的ShortDatePattern属性。

可能您的服务器具有不同的区域性设置,这就是为什么当您运行此代码时,会得到DateTime的不同字符串表示。

如果您想在两台服务器中获得相同的表示,请在区域和语言设置中为两台服务器设置相同的区域性,或者使用自定义日期和时间格式说明符,如;

TxtIndate.Value = DateTime.Now.ToString("dd-MM-yyyy");

或者Matt提到的一种更好的方法是使用InvariantCulture和类似的字符串格式;

TxtIndate.Value = DateTime.Now.ToString("dd-MM-yyyy", CultureInfo.InvariantCulture );

从c#代码来看,同一代码似乎不可能产生两种不同的时间格式。所以据我所知,我们必须在其他地方找到它。

也许混淆的根源在于HTML输出中的两种不同类型的input控件。一个type=text,一个type=date可以解释不同的格式,因为HTML5日期控件呈现不同。因此,一个日期是服务器格式化的值,另一个是浏览器,可能还有客户端文化,格式化的值。

正如其他海报所说,这是由于不同的文化。

如果具有相同的日期格式很重要(注意,用户希望以他们习惯的区域性格式查看日期(,那么您可以始终明确设置它。

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);

编码快乐!

相关内容

  • 没有找到相关文章

最新更新