C# 如何使用c以英国格式生成datetime.now返回日期#

C# 如何使用c以英国格式生成datetime.now返回日期#,c#,datetime,C#,Datetime,我想要datetime.now以UK格式返回datetime对象。它在本地计算机上执行此操作,但当我将代码上载到服务器时,它以美国格式执行DateTime没有任何相关格式。格式化只是为了演示。你可以做: string formattedDate = DateTime.Now.ToString(CultureInfo.CreateSpecificCulture("en-GB")); 或提供特定/自定义格式,如: string formattedDate = DateTime.Now.ToStri

我想要datetime.now以UK格式返回datetime对象。它在本地计算机上执行此操作,但当我将代码上载到服务器时,它以美国格式执行

DateTime
没有任何相关格式。格式化只是为了演示。你可以做:

string formattedDate = DateTime.Now.ToString(CultureInfo.CreateSpecificCulture("en-GB"));
或提供特定/自定义格式,如:

string formattedDate = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss", 
                                       CultureInfo.InvariantCulture);
我想要datetime.now以UK格式返回datetime对象

没有这样的概念,就像
int
是“十六进制”或“十进制”值一样。
DateTime
只是一个
DateTime
——您可以在将其转换为
字符串时指定格式。理解固有值与转换为文本后的外观之间的差异非常重要-很少有类型知道在转换自身时使用自定义的、可修改的格式-它要么是外部提供的(如
DateTime
,数字等),要么只是固定的

在转换硬编码英国格式之前,我强烈建议你仔细考虑你在做什么:

  • 理想情况下,首先要避免转换。很多时候,字符串转换是不必要的,并且可能会有问题
  • 文本是否将被另一台机器使用?使用ISO-8601标准格式
  • 文本是否将被一个人使用?使用他们的文化,而不是你决定的武断的文化。
    • 。。。或者在专用控件中显示它

您可以使用ToString方法的重载:ToString(“dd/MM/yyyy”)或:ToString(“yy/MMM/dd”)等

请在此处阅读更多信息:

我还觉得您可能需要在web.config中配置(UI-)区域性?然后,无论您的美国/日本/欧洲服务器文化如何,它都将始终采用相同的格式


关于这方面的更多信息:

也许我还不够清楚。我在数据库中有一个DateTime字段。当我从家用电脑中创建一个记录时,它会以英国格式将其存储在数据库中,当您检索它时,它会以英国格式为您提供2015年3月4日-今天的日期。但是,当您将相同的代码上载到服务器时,它会将日期存储在SQL DB中,然后当您检索它时,它会显示为03/04/2015-US格式。哦,我是通过传递DateTime来存储它的。现在到SQL参数,您的日期根本不会以英国格式存储在db中。您缺少演示文稿和物理存储方式之间的区别。如果您想以英国格式显示日期,这就是演示文稿。日期在数据库中的存储方式不会因此而改变。@user3733737:如果您将其作为文本存储在数据库中,您应该停止这样做。如果它真的是DateTime字段,那么正如Philip所说,它不是以任何特定格式存储的,就像
DateTime
没有格式一样。您应该显示
DateTime.Now
出现的上下文(代码)。可能存在一个隐式的
.ToString(null,null)
.ToString()
。只需将线程的当前区域性设置为uk,所有转换都可以。这不会全年都有效,因为uk使用格林威治标准时间或西欧时间(UTC)以及英国夏季时间或西欧夏季时间(UTC+01:00)
LogDate = DateTime.UtcNow.AddHours(1);