Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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# 如何以这种格式获取日期;2013年6月31日“;_C#_Date_Format - Fatal编程技术网

C# 如何以这种格式获取日期;2013年6月31日“;

C# 如何以这种格式获取日期;2013年6月31日“;,c#,date,format,C#,Date,Format,如何以这种格式获取日期“2013年6月30日” 在运行时,如果用户在文本框中键入上述格式,。它将获取指定日期的匹配数据行,并对其进行筛选,并在datagridview中显示 因此,我想将日期格式与文本框中键入的文本进行比较 string todaydate = Convert.ToString(DateTime.Today); DateTime DTM = Convert.ToDateTime(todaydate); string datetoday = DTM.ToString("dd-M

如何以这种格式获取日期“2013年6月30日”

在运行时,如果用户在文本框中键入上述格式,。它将获取指定日期的匹配数据行,并对其进行筛选,并在datagridview中显示

因此,我想将日期格式与文本框中键入的文本进行比较

string todaydate = Convert.ToString(DateTime.Today);

DateTime DTM = Convert.ToDateTime(todaydate);

string datetoday = DTM.ToString("dd-MMM-yyyy");

if (TypeHereTextBox.Text == datetoday)

{
    OLCMND2 = new OracleCommand("Select * from TABLENAME where DATE = '" +              typeHereTextBox.Text + "'", CON);

    OADAP1 = new OracleDataAdapter(OLCMND2);
    OADAP1.Fill(DTBLE2);

    DatagridView.DataSource = DTBLE2;
}

如何解决这个问题呢?

首先,您要进行字符串比较,这意味着您要比较引用。请使用

if (TypeHereTextBox.Text.Equals(datetoday))
相反

第二,为什么不比较dateTime和notstring呢? 由于您的数据不是有效日期,因此您不能使用
ParseExact
TryParseExact
,但可以使用任何有效日期:

DateTime d;
DateTime.TryParseExact(date, "dd-MMM-yyyy", System.Globalization.CultureInfo.InvariantCulture,
                                System.Globalization.DateTimeStyles.NoCurrentDateDefault, out d);

if (d== DTM)

这将从该格式解析:

var dateToParse = "30-Jun-2013"; //TypeHereTextBox.Text
var parsedDate = DateTime.ParseExact(dateToParse, "dd-MMM-yyyy", CultureInfo.InvariantCulture);

if (parsedDate.Date == datetoday.Date)
{
    // Do stuff

注-6月只有30天;)

最好的方法是用今天的日期分别检查日期、月份和年份。如果匹配,则以您想要的格式连接日期月份和年份并传递到查询。

我不会将日期作为字符串进行比较,首先使用
DateTime.ParseExact将字符串转换为DateTime,方法是提供DateTime格式字符串。然后比较两个datetime对象,而不是字符串比较

我还将使用参数设置日期列值,如下所示

OLCMND2 = new OracleCommand("Select * from TABLENAME where DATE = :dateVal", CON);
OLCMND2.Parameters.Add("dateVal", OracleDbType.Date
     , myDatetime, System.Data.ParameterDirection.Input);

嗨,我找到解决办法了,伙计们

string[] arrayData = TextBox.Text.Split('-');

if (arrayData.Length == 3)

OLCMND2 = new OracleCommand("Select VISITORCOUNT,REMARKS,to_date(to_char(TODAYDATE, 'DD-MON-YYYY'),'DD-MON-YYYY') AS TODAYDATE,CARDNUMBER,PHOTO from VMS_VISITOR where TODAYDATE = TO_DATE('" + TypeHereTextBox.Text + "','dd-MON-yyyy')", CON);

OADAP1 = new OracleDataAdapter(OLCMND2);
OADAP1.Fill(DTBLE2);

DatagridView.DataSource = DTBLE2;

感谢您的回复,伙计们

看看TryParse,将文本框内容转换为日期,并将其与今天的日期进行比较。请注意,dd MMM yyyy中的MMM与区域性有关。
DATE
列的数据库类型是什么?@Damith它是使用Oracle 11g的日期类型