Ama*_*ian 1 c# asp.net-mvc datetime date
我对在 c# 中使用文化不变性的正确方法感到困惑,在托管应用程序时,我包含的日期和时间似乎有些错误, <globalization uiCulture="en-IN" culture="en-IN" /> 并且一切正常。但是在迁移到云 Elastic Beanstalk 时,应用程序再次失败所以我<globalization uiCulture="en-IN" culture="en-IN" /> 再次包含但在其他时区失败除了印度使用 datepicker 选择的日期使用 ajax 代码传递给控制器,将它传递给应用程序如何工作的数据库操作的存储过程!但是在数据库中输入的日期似乎是错误的 (01-01-0001)。处理日期时间的正确方法是什么?哪个适用于所有时区?我尝试采用当前的文化,但该方法不起作用,因为我的查询与代码错误无关,我没有添加任何代码
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
Run Code Online (Sandbox Code Playgroud)
没有足够的信息来为您提供特定于您的代码的答案,但以下是大纲:
现在请记住,本地时间是指用户所在区域的时间,因此只有在客户端运行的代码才能知道用户的本地时间。在服务器上的.NET代码运行,并不会不知道用户的本地时间。有一些方法可以在服务器上获取用户的时区,但它并不总是可靠的,因此最好在客户端使用 JavaScript。这意味着:
现在,了解所有这些,以下是实用要点(我的食谱):
当您需要在服务器上生成当前日期以保存在数据库中时,使用DateTime.UtcNow. 对于不是来自客户端的日期,这是必需的。例如,如果要记录操作时间。我更喜欢在应用程序中执行此操作,但如果您更喜欢直接在数据库中执行此操作,请使用以 UTC 生成当前时间的数据库函数。
我建议使用可排序的日期和时间格式,因为 JavaScript 和 .Net 都理解它。但是,有一点不同。JavaScriptZ在最后添加,但这很容易补救。例如,.Net 中的 2009-06-15T13:45:30 在 JavaScript 中将是 2009-06-15T13:45:30Z。
如果要将 UTC 日期从 .Net 发送到 JavaScript,请使用:
var date = new Date("@mydate.ToString("s")Z");
JavaScript 会自动将其转换为本地时间。很漂亮,不是吗?
.toJSON()方法。它将使用可排序的日期和时间格式对其进行格式化,并自动将其转换为 UTC。美的东西。然后,在 .Net 中,您可以使用其中一个DateTime函数来解析字符串(例如DateTime.Parse())。