繁体   English   中英

如何使用C#在没有am / pm指示符的情况下获取当前系统日期和时间

[英]How to get current system date and time without am/pm Designators using c#

我将系统区域设置设置为“ spanish”,所以我得到的时间格式为: 20/02/2016 02:39:40 am ;我将该值存储在datetime变量中并传递给sql数据库表。 在插入datetime变量时,我也将数据库默认语言也设置为“西班牙语”。

从字符串转换日期和/或时间时转换失败

由于具有“。” (时段)在上午/下午,我收到此异常。 我在这个问题上进行了大量搜索,每个地方都将datetime变量转换为字符串格式,但是我应该仅将其作为datetime变量传递。

因此,请让我知道如何在不使用am / pm或不使用“。”的情况下获取当前系统日期时间 在上午/下午

 //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." 
                }

        }

提前致谢。

当将日期/时间传递给数据库时,我总是使用这个

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);

根据评论的第二次更新

另外2种方法可能是:

  • 运行数据库事务时切换区域性

     // 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键入为字符串而不是日期时间

    毕竟,当您执行SQL查询时,即使将日期时间存储在其中的字段为datetime类型,查询中的日期时间也被视为字符串(带引号)。

您如何获得该日期时间值? 您是否这样做:var dt = Datetime.Now;

您可以使用DateTime.Now.ToString(“ your formate”),这样您的时间就变成了字符串类型,最后,您可以插入数据库中,并使用sql函数将该字符串转换为日期类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM