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