Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.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

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# 如何找出字符串类型的两个日期之间的差异?_C#_Date_Model View Controller - Fatal编程技术网

C# 如何找出字符串类型的两个日期之间的差异?

C# 如何找出字符串类型的两个日期之间的差异?,c#,date,model-view-controller,C#,Date,Model View Controller,我有两个字符串,比如: Meter_read_date= "2019-10-04" Settlement_date= "2019-10-02" 我想写这样一个条件:如果计量器读取日期和结算日期之间的差值小于5 0r,则计量器读取日期=结算日期(而不是做某事或做某事) 我有以下代码: if (RegID > 0) { var MPAN = (from reg in ApproveCustRead where reg.REGISTRATION_ID == RegID select n

我有两个字符串,比如:

Meter_read_date= "2019-10-04"
Settlement_date= "2019-10-02"
我想写这样一个条件:如果计量器读取日期和结算日期之间的差值小于5 0r,则计量器读取日期=结算日期(而不是做某事或做某事)

我有以下代码:

if (RegID > 0)
{
    var MPAN = (from reg in ApproveCustRead where reg.REGISTRATION_ID == RegID select new { reg.MPAN }).FirstOrDefault();
    var D0071_SEND = (from reg in ApproveCustRead where reg.REGISTRATION_ID == RegID select new { reg.D0071_SEND }).FirstOrDefault();
    var ROLECODE = (from reg in ApproveCustRead where reg.REGISTRATION_ID == RegID select new { reg.ROLECODE }).FirstOrDefault();
    var TARIFFTYPE = (from reg in ApproveCustRead where reg.REGISTRATION_ID == RegID select new { reg.TariffType }).FirstOrDefault();
    var NORMAL_METER_READ = (from reg in ApproveCustRead where reg.REGISTRATION_ID == RegID select new { reg.NORMAL_METER_READ }).FirstOrDefault();
    var LOW_METER_READ = (from reg in ApproveCustRead where reg.REGISTRATION_ID == RegID select new { reg.LOW_METER_READ }).FirstOrDefault();
    var METER_READ_DATE = (from reg in ApproveCustRead where reg.REGISTRATION_ID == RegID select new { reg.METER_READ_DATE }).FirstOrDefault();
    var BILL_GENERATED = (from reg in ApproveCustRead where reg.REGISTRATION_ID == RegID select new { reg.BILL_GENERATED }).FirstOrDefault();
    var SETTLEMENT_DATE_REGI = (from reg in ApproveCustRead where reg.REGISTRATION_ID == RegID select new { reg.SETTLEMENT_DATE_REGI }).FirstOrDefault();
    var CUST_REFERENCE = (from reg in ApproveCustRead where reg.REGISTRATION_ID == RegID select new { reg.CUST_REF_NUMBER }).FirstOrDefault(); //added by amit on 18-06-19
    var ADDRESS = (from reg in ApproveCustRead where reg.REGISTRATION_ID == RegID select new { reg.CUST_ADDRESS }).FirstOrDefault(); // added by amit on 19-06-19



    if (Flow == "71")
    {
        D0071Send(RegID, Convert.ToString(MPAN.MPAN.Trim()), Convert.ToString(ROLECODE.ROLECODE.Trim()), Convert.ToString(TARIFFTYPE.TariffType.Trim()), Convert.ToInt32(NORMAL_METER_READ.NORMAL_METER_READ), Convert.ToInt32(LOW_METER_READ.LOW_METER_READ), Convert.ToString(SETTLEMENT_DATE_REGI.SETTLEMENT_DATE_REGI.Trim()));
    }
    else if (Flow == "10")
    {
        D0010Send(RegID, Convert.ToString(MPAN.MPAN.Trim()), Convert.ToString(ROLECODE.ROLECODE.Trim()), Convert.ToString(TARIFFTYPE.TariffType.Trim()), Convert.ToInt32(NORMAL_METER_READ.NORMAL_METER_READ), Convert.ToInt32(LOW_METER_READ.LOW_METER_READ), Convert.ToString(METER_READ_DATE.METER_READ_DATE.Trim()));
    }
    else if (Flow == "RR")
    {
        DateTime startdate = Convert.ToDateTime(METER_READ_DATE);//latest date
                                    DateTime enddate = Convert.ToDateTime(SETTLEMENT_DATE_REGI);//old date
                                    string D0071send = Convert.ToString(D0071_SEND);
                                    if ((startdate - enddate).Days < 5  || startdate.Date==enddate.Date)
                                    {
                                        if(D0071send == "YES")
                                        {
                                            D0010Send(RegID, Convert.ToString(MPAN.MPAN.Trim()), Convert.ToString(ROLECODE.ROLECODE.Trim()), Convert.ToString(TARIFFTYPE.TariffType.Trim()), Convert.ToInt32(NORMAL_METER_READ.NORMAL_METER_READ), Convert.ToInt32(LOW_METER_READ.LOW_METER_READ), Convert.ToString(METER_READ_DATE.METER_READ_DATE.Trim()));

                                        }
                                        else
                                        {
                                            D0071Send(RegID, Convert.ToString(MPAN.MPAN.Trim()), Convert.ToString(ROLECODE.ROLECODE.Trim()), Convert.ToString(TARIFFTYPE.TariffType.Trim()), Convert.ToInt32(NORMAL_METER_READ.NORMAL_METER_READ), Convert.ToInt32(LOW_METER_READ.LOW_METER_READ), Convert.ToString(SETTLEMENT_DATE_REGI.SETTLEMENT_DATE_REGI.Trim()));

                                        }
                                    }
                                    else
                                    {
                                        D0010Send(RegID, Convert.ToString(MPAN.MPAN.Trim()), Convert.ToString(ROLECODE.ROLECODE.Trim()), Convert.ToString(TARIFFTYPE.TariffType.Trim()), Convert.ToInt32(NORMAL_METER_READ.NORMAL_METER_READ), Convert.ToInt32(LOW_METER_READ.LOW_METER_READ), Convert.ToString(METER_READ_DATE.METER_READ_DATE.Trim()));

                                    }
    }
}

if(RegID>0)
{
var MPAN=(从ApproveCustRead中的reg开始,其中reg.REGISTRATION\u ID==RegID选择新的{reg.MPAN});
var D0071_SEND=(从ApproveCustRead中的reg开始,其中reg.REGISTRATION_ID==RegID选择新的{reg.D0071_SEND});
var ROLECODE=(从ApproveCustRead中的reg开始,其中reg.REGISTRATION\u ID==RegID选择新的{reg.ROLECODE});
var TARIFFTYPE=(从ApproveCustRead中的reg开始,其中reg.REGISTRATION\u ID==RegID选择新的{reg.TARIFFTYPE});
var NORMAL_METER_READ=(从ApproveCustRead中的reg开始,其中reg.REGISTRATION_ID==RegID选择new{reg.NORMAL_METER_READ});
var LOW_METER_READ=(从ApproveCustRead中的reg开始,其中reg.REGISTRATION_ID==RegID选择新的{reg.LOW_METER_READ});
var METER_READ_DATE=(从ApproveCustRead中的reg开始,其中reg.REGISTRATION_ID==RegID选择新的{reg.METER_READ_DATE});
var BILL_GENERATED=(从ApproveCustRead中的reg开始,其中reg.REGISTRATION_ID==RegID选择新的{reg.BILL_GENERATED});
var结算日期注册=(从ApproveCustRead中的reg开始,其中reg.REGISTRATION\U ID==注册选择新的{reg.结算日期注册])。FirstOrDefault();
var CUST_REFERENCE=(从ApproveCustRead中的reg开始,其中reg.REGISTRATION_ID==RegID选择新的{reg.CUST_REF_NUMBER})。FirstOrDefault();//由amit于19年6月18日添加
var ADDRESS=(从ApproveCustRead中的reg开始,其中reg.REGISTRATION\u ID==RegID选择新的{reg.CUST\u ADDRESS})。FirstOrDefault();//由amit于19-06-19添加
如果(流量=“71”)
{
D0071Send(RegID,Convert.ToString(MPAN.MPAN.Trim()),Convert.ToString(ROLECODE.ROLECODE.Trim()),Convert.ToString(TARIFFTYPE.TARIFFTYPE.Trim()),Convert.ToInt32(正常仪表读数。正常仪表读数),Convert.ToInt32(低位仪表读数。低位仪表读数),Convert.ToString(结算日期\区域仪表读数());
}
否则,如果(流量=“10”)
{
D0010Send(RegID,Convert.ToString(MPAN.MPAN.Trim()),Convert.ToString(ROLECODE.ROLECODE.Trim()),Convert.ToString(TARIFFTYPE.TARIFFTYPE.Trim()),Convert.ToInt32(NORMAL_METER_READ.NORMAL_METER_READ),Convert.ToInt32(LOW_METER_READ.LOW_METER_READ,LOW_METER_READ),Convert.ToString(METER_READ_READ_DATE_DATE.Trim());
}
否则如果(流量=“RR”)
{
DateTime startdate=Convert.ToDateTime(仪表读取日期);//最新日期
DateTime enddate=Convert.ToDateTime(结算日);//旧日期
字符串D0071send=Convert.ToString(D0071\u发送);
如果((startdate-enddate).Days<5 | | startdate.Date==enddate.Date)
{
如果(D0071send=“是”)
{
D0010Send(RegID,Convert.ToString(MPAN.MPAN.Trim()),Convert.ToString(ROLECODE.ROLECODE.Trim()),Convert.ToString(TARIFFTYPE.TARIFFTYPE.Trim()),Convert.ToInt32(NORMAL_METER_READ.NORMAL_METER_READ),Convert.ToInt32(LOW_METER_READ.LOW_METER_READ,LOW_METER_READ),Convert.ToString(METER_READ_READ_DATE_DATE.Trim());
}
其他的
{
D0071Send(RegID,Convert.ToString(MPAN.MPAN.Trim()),Convert.ToString(ROLECODE.ROLECODE.Trim()),Convert.ToString(TARIFFTYPE.TARIFFTYPE.Trim()),Convert.ToInt32(正常仪表读数。正常仪表读数),Convert.ToInt32(低位仪表读数。低位仪表读数),Convert.ToString(结算日期\区域仪表读数());
}
}
其他的
{
D0010Send(RegID,Convert.ToString(MPAN.MPAN.Trim()),Convert.ToString(ROLECODE.ROLECODE.Trim()),Convert.ToString(TARIFFTYPE.TARIFFTYPE.Trim()),Convert.ToInt32(NORMAL_METER_READ.NORMAL_METER_READ),Convert.ToInt32(LOW_METER_READ.LOW_METER_READ,LOW_METER_READ),Convert.ToString(METER_READ_READ_DATE_DATE.Trim());
}
}
}

我怎样才能继续呢?我尝试了else if(flow=“RR”),但没有成功。

如果字符串始终采用该格式:

int yearStart = Convert.ToInt32(Meter_read_date.Substring(0, 4));
int monthStart = Convert.ToInt32(Meter_read_date.Substring(2, 2));
int dayStart = Convert.ToInt32(Meter_read_date.Substring(4,2));

DateTime startDate = new DateTime(yearStart, monthStart, dayStart);

//You could possibly skip the three lines of variables and put them directly in the startDate.
//Do the same for the other date and create a variable endDate.
现在您可以使用post:


看起来您正试图从日期时间中减去字符串。如果METER_READ_DATE始终以该格式创建为字符串,则您应该能够对其进行解析,然后在解析时将其与其他字符串进行比较

//RequestMeterRead(RegID);
if (DateTime.Parse(METER_READ_DATE).Day - DateTime.Parse(SETTLEMENT_DATE_REGI).Day < 5)
{

}
//RequestMeterRead(RegID);
if(DateTime.Parse(METER\u READ\u DATE).Day-DateTime.Parse(结算日期\u REGI).Day<5)
{
}
这对我很有用:

DateTime startdate = Convert.ToDateTime(Convert.ToString(METER_READ_DATE.METER_READ_DATE));//latest date
                                    DateTime enddate = Convert.ToDateTime(Convert.ToString(SETTLEMENT_DATE_REGI.SETTLEMENT_DATE_REGI));//old date
                                    string D0071send = Convert.ToString(D0071_SEND);
                                    if ((startdate - enddate).Days < 5  || startdate.Date==enddate.Date)
                                    {
                                        if(D0071send == "YES")
                                        {
                                            D0010Send(RegID, Convert.ToString(MPAN.MPAN.Trim()), Convert.ToString(ROLECODE.ROLECODE.Trim()), Convert.ToString(TARIFFTYPE.TariffType.Trim()), Convert.ToInt32(NORMAL_METER_READ.NORMAL_METER_READ), Convert.ToInt32(LOW_METER_READ.LOW_METER_READ), Convert.ToString(METER_READ_DATE.METER_READ_DATE.Trim()));

                                        }
                                        else
                                        {
                                            D0071Send(RegID, Convert.ToString(MPAN.MPAN.Trim()), Convert.ToString(ROLECODE.ROLECODE.Trim()), Convert.ToString(TARIFFTYPE.TariffType.Trim()), Convert.ToInt32(NORMAL_METER_READ.NORMAL_METER_READ), Convert.ToInt32(LOW_METER_READ.LOW_METER_READ), Convert.ToString(SETTLEMENT_DATE_REGI.SETTLEMENT_DATE_REGI.Trim()));

                                        }
                                    }
                                    else
                                    {
                                        D0010Send(RegID, Convert.ToString(MPAN.MPAN.Trim()), Convert.ToString(ROLECODE.ROLECODE.Trim()), Convert.ToString(TARIFFTYPE.TariffType.Trim()), Convert.ToInt32(NORMAL_METER_READ.NORMAL_METER_READ), Convert.ToInt32(LOW_METER_READ.LOW_METER_READ), Convert.ToString(METER_READ_DATE.METER_READ_DATE.Trim()));

                                    }
DateTime startdate=Convert.ToDateTime(Convert.ToString(METER_READ_DATE.METER_READ_DATE))//最晚日期
DateTime enddate=Convert.ToDateTime(Convert.ToString(结算日期区域结算日期区域))//旧日
字符串D0071send=Convert.ToString(D0071\u发送);
如果((startdate-enddate).Days<5 | | startdate.Date==enddate.Date)
{
如果(D0071send=“是”)
{
D0010Send(RegID,Convert.ToString(MPAN.MPAN.Trim())、Convert.ToString(ROLECODE.ROLECODE.Trim())、Convert.ToString(TARIFFTYPE.TARIFFTYPE.Trim())、Convert.ToInt32(正常仪表读数、正常仪表读数)、Convert.ToInt32(低位仪表_
DateTime startdate = Convert.ToDateTime(Convert.ToString(METER_READ_DATE.METER_READ_DATE));//latest date
                                    DateTime enddate = Convert.ToDateTime(Convert.ToString(SETTLEMENT_DATE_REGI.SETTLEMENT_DATE_REGI));//old date
                                    string D0071send = Convert.ToString(D0071_SEND);
                                    if ((startdate - enddate).Days < 5  || startdate.Date==enddate.Date)
                                    {
                                        if(D0071send == "YES")
                                        {
                                            D0010Send(RegID, Convert.ToString(MPAN.MPAN.Trim()), Convert.ToString(ROLECODE.ROLECODE.Trim()), Convert.ToString(TARIFFTYPE.TariffType.Trim()), Convert.ToInt32(NORMAL_METER_READ.NORMAL_METER_READ), Convert.ToInt32(LOW_METER_READ.LOW_METER_READ), Convert.ToString(METER_READ_DATE.METER_READ_DATE.Trim()));

                                        }
                                        else
                                        {
                                            D0071Send(RegID, Convert.ToString(MPAN.MPAN.Trim()), Convert.ToString(ROLECODE.ROLECODE.Trim()), Convert.ToString(TARIFFTYPE.TariffType.Trim()), Convert.ToInt32(NORMAL_METER_READ.NORMAL_METER_READ), Convert.ToInt32(LOW_METER_READ.LOW_METER_READ), Convert.ToString(SETTLEMENT_DATE_REGI.SETTLEMENT_DATE_REGI.Trim()));

                                        }
                                    }
                                    else
                                    {
                                        D0010Send(RegID, Convert.ToString(MPAN.MPAN.Trim()), Convert.ToString(ROLECODE.ROLECODE.Trim()), Convert.ToString(TARIFFTYPE.TariffType.Trim()), Convert.ToInt32(NORMAL_METER_READ.NORMAL_METER_READ), Convert.ToInt32(LOW_METER_READ.LOW_METER_READ), Convert.ToString(METER_READ_DATE.METER_READ_DATE.Trim()));

                                    }