我对在c#中使用区域性不变量的正确方法感到困惑,在托管应用程序时,我包含<globalization uiCulture="en-IN" culture="en-IN" />的日期和时间似乎有一些错误,一切正常。但在迁移到云弹性豆茎的应用程序再次失败,所以我再次包括<globalization uiCulture="en-IN" culture="en-IN" />,但在其他时区失败,除了印度,日期选择器选择的日期传递给控制器使用ajax代码,传递到数据库操作的存储过程,应用程序如何工作!但是在数据库中输入的日期似乎是错误的(01-01-0001)。处理datetime的正确方法是什么?哪一项适用于所有时区?我尝试采用当前的区域性,但该方法不起作用,因为我的查询不是关于代码方面的错误,我没有添加任何代码
public JsonResult CreateAcademicInfo(CreateCommand create)
{
return Json(_academicInfo.CreateClass(create),JsonRequestBehavior.AllowGet);
} .// controller
private bool CreateAcademicInfo(CreateCommand createAcademicInfo, IDbUtility dbObj)
{
ISumDbCommand cmdcreateAcademicInfo =
dbObj.CreateCommand("uspAddInformations", CommandType.StoredProcedure);
cmdcreateAcademicInfo.AddParameter("HierarchyStructureName", SumDbType.String,
createAcademicInfo.HierarchyStructureName);
cmdcreateAcademicInfo.AddParameter("MaximumCount",SumDbType.Integer,createAcademicInfo.MaximumCount);
cmdcreateAcademicInfo.AddParameter("StartDate",SumDbType.DateTime,createAcademicInfo.StartDate);
cmdcreateAcademicInfo.AddParameter("EndDate",SumDbType.DateTime, createAcademicInfo.EndDate);
int errorCode = dbObj.StoredProcExecute(cmdcreateAcademicInfo.DbCommand);
if (errorCode != 0)
{
throw new Exception.DbOperationException($"Error {errorCode} occurred = {dbObj.LastError}");
}
return true;
} //API 发布于 2018-02-01 15:12:21
没有足够的信息可以为您提供特定于您的代码的答案,但以下是概要:
在将所有日期保存到database.
现在请记住,本地时间意味着用户所在区域的时间,所以只有客户端上运行的代码知道用户的本地时间。您的.Net代码在服务器上运行,并且不知道用户的本地时间。有一些方法可以在服务器上获取用户的时区,但它并不总是可靠的,所以最好在客户端使用JavaScript。这意味着:
< code >H119所有日期转换必须在UTC中完成。客户端和服务器端之间的日期传输必须采用相同的格式,并且建议使用通用标准格式。
现在,理解了所有这些,这里是实用的要点(我的秘诀):
DateTime.UtcNow。对于不是来自客户端的日期,这是必需的。例如,如果您想要记录操作时间。我更喜欢在应用程序中执行此操作,但如果您更喜欢直接在数据库中执行此操作,请使用以UTC格式生成当前时间的数据库函数。Z,但这很容易补救。例如,在JavaScript.var date = new Date("@mydate.ToString("s")Z");
JavaScript会自动将其转换为本地时间。很漂亮,不是吗?
.toJSON()方法。它将使用可排序的日期和时间格式格式化它,并自动将其转换为UTC。美的东西。然后,在.Net中,您可以使用一个DateTime函数来解析字符串(例如DateTime.Parse()).发布于 2018-02-01 14:36:35
我遇到了类似的与日期时间相关的问题,这对我有帮助,在你的Global.asax中:
protected void Application_Start()
{
CultureInfo newCulture = (CultureInfo)System.Threading.Thread.CurrentThread.CurrentCulture.Clone();
newCulture.DateTimeFormat.ShortDatePattern = "dd/MM/yyyy";
newCulture.DateTimeFormat.DateSeparator = "/";
Thread.CurrentThread.CurrentCulture = newCulture;
}
protected void Application_BeginRequest()
{
CultureInfo newCulture = (CultureInfo)System.Threading.Thread.CurrentThread.CurrentCulture.Clone();
newCulture.DateTimeFormat.ShortDatePattern = "dd/MM/yyyy";
newCulture.DateTimeFormat.DateSeparator = "/";
Thread.CurrentThread.CurrentCulture = newCulture;
}这将集中设置应用程序的日期时间格式和区域性,还可以使用jquery集中设置日期时间选择器的格式,使其与Global.asax中的格式相同
https://stackoverflow.com/questions/48556149
复制相似问题