我将系统区域设置设置为" spanish",所以我得到的时间格式如下:20/02/2016 02:39:40 a.m.
;我已将此值存储在datetime变量中并传递给sql数据库表。我在插入datetime varaible..getting exception时将数据库默认语言也设置为" spanish"
从字符转换日期和/或时间时,转换失败 串
由于有"。" (上午)在上午/下午。我得到了这个例外。我在这个问题上搜索了很多,每个地方都将datetime varaible转换为字符串格式。但我应该只将它作为日期时间变量传递。
因此,请告诉我如何在没有上午/下午或没有"的情况下获取当前系统日期时间。"在上午/下午
//Here is my code:
DomainSchema.DOMAINRow drDomain = domain_dataset.DOMAIN.NewDOMAINRow();
//Assigning the values to the DataRow of the table Domain
drDomain.CREATED_DATE = DateTime.Now;
drDomain.LAST_UPDT_DATE = DateTime.Now;
domain_dataset.DOMAIN.AddDOMAINRow(drDomain);
CultureInfo i;
i = (CultureInfo)System.Threading.Thread.CurrentThread.CurrentCulture.Clone();
if (i.Name == "es-PE")
{
CultureInfo c = CultureInfo.CreateSpecificCulture("es-ES");
String s = DateTime.Now.ToString(c); //getting s="20/02/2016 08:07:54"
DateTime d = DateTime.Parse(s, c, System.Globalization.DateTimeStyles.AssumeLocal); //geting d="20/02/2016 08:07:54 a.m."
}
//method that uses this dataset
public override string Create(DataSet ds, string tableName, IDbTransaction transaction, IPrincipal user)
{
DataRow dRow = null;
CommandStatement cmdStatemnt;
string strResult = string.Empty;
try
{
dRow = ds.Tables[tableName].Rows[0];
cmdStatemnt = Execute(dRow, tableName, transaction, true, null, user);
//Here I'm getting exception,conversion failed when converting date and/or time from character string,due to having "." in "a.m."
}
}
提前感谢。
答案 0 :(得分:3)
将日期/时间传递给数据库时,我总是使用此
Datetime d = DateTime.Today;
String s = d.ToString("MM/dd/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture);
// output "02/20/2016 12:00:00 AM"
String s = d.ToString("MM/dd/yyyy HH:mm:ss", CultureInfo.InvariantCulture);
// output "02/20/2016 00:00:00"
使用大写字母HH提供24小时格式
在这里,您可以找到更多有关日期时间格式的信息
根据评论进行更新
在所描述的情况下,你应该可以做这样的事情。
CultureInfo c = CultureInfo.CreateSpecificCulture("es-ES");
String s = DateTime.Now.ToString(c);
DateTime d = DateTime.Parse(s, c, System.Globalization.DateTimeStyles.AssumeLocal);
基于评论的第二次更新
可能有两种方式:
在运行数据库事务时切换文化
// Switch Current Culture
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
// run database code
// Switch Back To Origin Current Culture
Thread.CurrentThread.CurrentCulture = new CultureInfo("es-ES");
更改数据集对象,并将CREATED_DATE键入为字符串而不是datetime
毕竟,当您执行SQL查询时,日期时间在查询中被视为字符串(引用),即使它们存储的字段是日期时间类型。
答案 1 :(得分:0)
您如何获得该日期时间值?你这样做是这样的: var dt = Datetime.Now;
答案 2 :(得分:0)
你可以使用DateTime.Now.ToString(“your formate”),所以你的时间变成了字符串类型,最后,你可以插入数据库,用sql函数将这个字符串转换为日期类型。