Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 日期的格式不符合预期(dd/MM/yyyy)_C#_Asp.net_Date_Datetime - Fatal编程技术网

C# 日期的格式不符合预期(dd/MM/yyyy)

C# 日期的格式不符合预期(dd/MM/yyyy),c#,asp.net,date,datetime,C#,Asp.net,Date,Datetime,我想以dd/MM/yyyy格式将日期插入数据库。为此,我写了如下: drExpInfo[0]["CHEQUE_DT"] = string.IsNullOrWhiteSpace(e.Record["CHEQUE_DT"].ToString()) ? DBNull.Value : (object)Convert.ToDateTime(e.Record["CHEQUE_DT"]); 它在我的本地机器上运行得非常好,但在我的服务器上它的格式是dd/MM/yyyy hh:MM:ss。那么,如何在

我想以dd/MM/yyyy格式将日期插入数据库。为此,我写了如下:

drExpInfo[0]["CHEQUE_DT"] = string.IsNullOrWhiteSpace(e.Record["CHEQUE_DT"].ToString())
    ? DBNull.Value : (object)Convert.ToDateTime(e.Record["CHEQUE_DT"]);
它在我的本地机器上运行得非常好,但在我的服务器上它的格式是dd/MM/yyyy hh:MM:ss。那么,如何在那里设置相同的格式呢。请建议。

试试:

public static DateTime? DateFromString(string value)
{
   if (string.IsNullOrWhiteSpace(value))
     {
       return null;
     }
   else
     {
        return DateTime.ParseExact(dateString, "dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture);
     }
}

DateTime? date=DateFromString(e.Record["CHEQUE_DT"]);
drExpInfo[0]["CHEQUE_DT"] = date==null? DBNull.Value : (object)date);

您可以设置CultureInfo

var cultureInfo = new CultureInfo("en-GB", false).DateTimeFormat;
string result = Convert.ToDateTime(e.Record["CHEQUE_DT"], cultureInfo).ToString();
使用:

但是,我建议您保留日期的时间部分,而不使用ToSortDateString,因为它将插入一个设置为午夜的时间,请参阅下面Oracle文档中的突出显示文本,并在使用日期时获得您想要的格式,而不使用时间

发件人:

在日期表达式中使用默认日期格式的字符值时,Oracle数据库会自动将其转换为日期值

如果指定的日期值没有时间组件,则默认时间为午夜。如果指定的日期值没有日期,则默认日期为当前月份的第一天

Oracle数据库日期列始终包含日期和时间字段。如果查询使用没有时间部分的日期格式,则必须确保日期列中的时间字段设置为午夜。可以使用TRUNC date SQL函数确保时间字段设置为午夜,也可以将查询设置为大于或小于的测试,而不是等于或不等于=或!=。否则,Oracle数据库可能不会返回预期的查询结果

因此,您可以在c中以任何格式转换日期,删除时间部分,Oracle将自动将日期的时间部分设置为午夜00:00:00。

在这里,您可以找到两种或多种方法来设置日期格式,同时将记录插入数据库

insert into sampleDate(Start_Date) values (to_date('25-Jun-2017','YYYYMMDD'))

您使用的是什么数据库管理系统?那么db中的check_DT是什么类型的呢?@M.Wiśnicki:我在用甲骨文,对不起,忘了给它加标签了。check_dt是日期数据类型。不要将日期存储为具有格式的字符串。将它们存储在数据库中适当的数据类型中,例如datetime。这种类型没有格式。@Damien_不信者;谢谢你的建议。我使用数据库中的日期。我只想在我的代码中自定义这里。在这里如何处理它因此,在输入日期之后,立即将其解析为.NET DateTime。然后,在将其发送到数据库时使用参数,并依靠ADO.Net和ODP对Oracle的日期执行适当的转换,并将其从数据库检索回DateTime,只有在实际向用户显示时,才应将其转换回字符串。在这一点上,你可以选择任何你喜欢的格式——但是当你不需要导致格式错误的字符串时,它不适当地将其转换为字符串。但您可以添加ToString或result,因为varI还需要检查NULL。如果没有提供日期,那么您的代码将抛出一个错误。最佳重载方法在第DateTime行有一些无效参数?日期=记录日期[支票日期];在sampleDateStart_日期值中插入日期'2017年6月25日','YYYYMMDD'这是一个仅链接的答案;它应该是对问题的评论或在回答中包含相关部分。但是,链接的问题与SQL Developer有关,而不是与C中的日期格式有关,并且似乎只与之有切点关系。@Kathir07您可以编辑和改进答案,而不是对其进行注释。因为您的oracle类型是日期,所以它应该将时间部分插入为00:00:00。我说得对吗?我建议你保留时间部分。不,它也显示在数据库中,这就是为什么我不希望它用Oracle参考和建议更新我的答案。
insert into sampleDate(Start_Date) values (to_date('25-Jun-2017','YYYYMMDD'))