我对在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
答案 0 :(得分:1)
没有足够的信息为您提供特定于您的代码的答案,但以下是大纲:
现在请记住,本地时间是指用户区域中的时间,因此仅在客户端运行的代码是了解本地时间的代码用户的时间。您的.Net代码在服务器上运行, NOT 知道用户的本地时间。有一些方法可以在服务器上获取用户的时区,但它并不总是可靠的,所以最好在客户端使用JavaScript。这意味着:
现在,了解所有这些,这里是实用点(我的食谱):
当您需要在服务器上生成要保存在数据库中的当前日期时,请使用DateTime.UtcNow
。对于非来自客户端的日期,这是必需的。例如,如果要记录操作时间。我更喜欢在应用程序中执行此操作,但如果您希望直接在数据库中执行此操作,请使用以UTC格式生成当前时间的数据库函数。
我建议使用可排序的日期&amp;时间格式,因为JavaScript和.Net都理解它。但是,有一点不同。 JavaScript最后会添加Z
,但这很容易解决。例如,2009-06-15T13:45:30在.Net中将是2009-06-15T13:45:30Z的JavaScript。
如果您想将UTC日期从.Net发送到JavaScript,请使用:
var date = new Date("@mydate.ToString("s")Z");
JavaScript会自动将其转换为本地时间。美丽,不是吗?
.toJSON()
方法。它将使用可排序的日期和格式对其进行格式化。时间格式并自动将其转换为UTC。美丽的事物。然后,在.Net中,您可以使用其中一个DateTime
函数来解析字符串(例如DateTime.Parse()
)。答案 1 :(得分:0)
我遇到了类似的日期时间问题,这对我的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中的格式