C# 将整数转换为datetime并在c中比较日期#
我在C#中解析两个整数到datetime时遇到了一个问题。我有两个整数,如下所示:C# 将整数转换为datetime并在c中比较日期#,c#,C#,我在C#中解析两个整数到datetime时遇到了一个问题。我有两个整数,如下所示: int day = 25; int month = 08; var currentYear = DateTime.Now.Year; var scheduledDate = "25/08/2018"; 我想要的是将日、月和当前年份转换为dd/MM/yyyy格式,并将此日期与格式为dd/MM/yyyy的scheduledDate进行比较。有人能帮我吗 不应将DateTime对象转换为String对象,而应始终
int day = 25;
int month = 08;
var currentYear = DateTime.Now.Year;
var scheduledDate = "25/08/2018";
我想要的是将
日、月和当前年份
转换为dd/MM/yyyy
格式,并将此日期与格式为dd/MM/yyyy
的scheduledDate进行比较。有人能帮我吗 不应将DateTime
对象转换为String
对象,而应始终将String
转换为DateTime
对象,然后进行比较
var yourDateTime = new DateTime(currentYear, month, day);
var yourDateString = yourDateTime.ToString("dd/MM/yyyy");
// compare
int day = 25;
int month = 08;
var currentYear = DateTime.Now.Year;
var scheduledDate = "25/08/2018";
var dtScheduledDate = DateTime.ParseExact(scheduledDate, "dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture);
var dtCurrentDate = new DateTime(currentYear, month, day);
if (dtScheduledDate < dtCurrentDate)
{
// ...
}
int-day=25;
整月=08;
var currentYear=DateTime.Now.Year;
var scheduledDate=“25/08/2018”;
var dtScheduledDate=DateTime.ParseExact(scheduledDate,“dd/MM/yyyy”,System.Globalization.CultureInfo.InvariantCulture);
var dtCurrentDate=新日期时间(当前年、月、日);
if(dtScheduledDate
如果只想比较日期,则可以使用DateTime的date
属性
int day = 25;
int month = 08;
var currentYear = DateTime.Now.Year;
var dateToCompare = new DateTime(currentYear, month, day);
var scheduledDt = "25/08/2018";
var scheduledDate = DateTime.ParseExact(scheduledDt, "dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture);
if(dateToCompare.Date == scheduledDate.Date)
{
//Your logic
}
POC:尝试以下方法,您可以使用该方法将其转换为所需的格式
int day = 25;
int month = 08;
var currentYear = DateTime.Now.Year;
var date = new DateTime(DateTime.Now.Year, month, day);
var formattedDate = date.ToString("dd/MM/yyyy");
var scheduledDate = "25/08/2018";
// Compare formattedDate and scheduledDate
或
您可以考虑将调度日期字符串转换为日期时间,并比较日期时间对象,如果更合适的话:
var scheduledDate = "25/08/2018";
var parsedDate = DateTime.ParseExact(scheduledDate, "dd/MM/yyyy", CultureInfo.InvariantCulture);
var date = new DateTime(DateTime.Now.Year, month, day);
// compare date & parsed date
bool areEqual = date.Equals(parsedDate);
在这种情况下,如果变量scheduleDate
是字符串,则可以将其他变量(日、月和当前年)
转换为所需格式的字符串:
var dt = day + "/" + month + "/" + currentYear;
因此,要进行比较,请执行以下操作:
if(dt.Equals(scheduleDate))
//Do some
else
//other thing
如果我理解你的问题,就保持零
int day = 25;
int month = 08;
var currentYear = DateTime.Now.Year;
var targetDate = $"{day}/{month.ToString().PadLeft(2,'0')}/{currentYear}";
var scheduledDate = "25/08/2018";
var difference = DateTime.Compare(DateTime.Parse(targetDate),
DateTime.Parse(scheduledDate));
如果您只想将其转换为字符串,这应该是最简单的方法:
int day = 25;
int month = 08;
var currentYear = DateTime.Now.Year;
// {day:D2} is equivalent to day.ToString("D2") which pads integers to a length of two
var createdDate = $"{day:D2}/{month:D2}/{currentYear}";
var scheduledDate = "25/08/2018";
编辑
根据这里的人们所说的几点,将两者解析为DateTime
可能更适合比较部分:
DateTime createdDateTime = new DateTime(currentYear, month, day);
DateTime scheduledDateTime = DateTime.ParseExact(scheduledDate, "dd/MM/yyyy", CultureInfo.InvariantCulture);
// Compare if it's the same day
if (createdDateTime.Date == scheduledDateTime.Date)
{
// do stuff
}
// Get the difference in Days
int dayDifference = (createdDateTime - scheduledDateTime).Days;
或者,.TotalDays
而不是。Days
返回一个双精度静态void Main(字符串[]args)
static void Main(string[] args)
{
int transactionDate = 20201010;
int? transactionTime = 210000;
var agreementDate = DateTime.Today;
var previousDate = agreementDate.AddDays(-1);
var agreementHour = 22;
var agreementMinute = 0;
var agreementSecond = 0;
var startDate = new DateTime(previousDate.Year, previousDate.Month, previousDate.Day, agreementHour, agreementMinute, agreementSecond);
var endDate = new DateTime(agreementDate.Year, agreementDate.Month, agreementDate.Day, agreementHour, agreementMinute, agreementSecond);
DateTime selectedDate = Convert.ToDateTime(transactionDate.ToString().Substring(6, 2) + "/" + transactionDate.ToString().Substring(4, 2) + "/" + transactionDate.ToString().Substring(0, 4) + " " + string.Format("{0:00:00:00}", transactionTime));
Console.WriteLine("Selected Date : " + selectedDate.ToString());
Console.WriteLine("Start Date : " + startDate.ToString());
Console.WriteLine("End Date : " + endDate.ToString());
if (selectedDate > startDate && selectedDate <= endDate)
Console.WriteLine("Between two dates..");
else if (selectedDate <= startDate)
Console.WriteLine("Less than or equal to the start date!");
else if (selectedDate > endDate)
Console.WriteLine("Greater than end date!");
else
Console.WriteLine("Out of date ranges!");
}
{
int transactionDate=20201010;
int?交易时间=210000;
var agreementDate=DateTime.Today;
var previousDate=协议日期。添加天数(-1);
var agreementHour=22;
var agreementMinute=0;
var agreementSecond=0;
var startDate=新日期时间(previousDate.Year,previousDate.Month,previousDate.Day,agreementHour,agreementMinute,agreementSecond);
var endDate=新的日期时间(agreementDate.Year、agreementDate.Month、agreementDate.Day、agreementHour、agreementMinute、agreementSecond);
DateTime selectedDate=Convert.ToDateTime(transactionDate.ToString().Substring(6,2)+“/”+transactionDate.ToString().Substring(4,2)+“/”+transactionDate.ToString().Substring(0,4)+“+string.Format(“{0:00:00}”,transactionTime));
Console.WriteLine(“所选日期:+selectedDate.ToString());
Console.WriteLine(“开始日期:+startDate.ToString());
Console.WriteLine(“结束日期:+endDate.ToString());
如果(selectedDate>startDate&&selectedDate),您可以将它们连接起来var-date=$“{day}/{month}/{currentYear}”
我希望在日或月之前保留任何之前的0。忘记特定格式和前导零等。只需创建一个具有正确日期的日期对象,并将其与另一个日期对象进行比较。诸如dd/mm/yyyy之类的格式仅用于显示目的。当您确实要处理或计算日期或时间时,请使用日期或时间DateTime对象,不使用任何特定的格式。当你想向用户显示日期或时间时,你才担心格式。为什么要将DateTime
对象转换为字符串,而不是将string
转换为DateTime
?@SeM:Guy说他想比较字符串,所以它就这样做了,没什么,没什么Lessy你总是可以选择向某人展示一种“正确”(无论这意味着什么)的做事方式。@SeM:你不知道他到底想要什么,我没有看到整个编码比较字符串是比较日期的一种糟糕方式。我理解ADyson先生。我给出了这个解决方案,当然我可以看到我们想要比较的另一个变量是字符串(var scheduledDate=“25/08/2018”;)正确,但实际上OP没有说明他们想要什么样的比较。如果他们想要简单的等于,那么字符串比较就可以了,假设两种情况下使用完全相同的格式。但是如果他们想要小于/大于,那么对于日期,字符串比较就不能按预期工作(特别是像dd/mm/yyyy这样的格式)
static void Main(string[] args)
{
int transactionDate = 20201010;
int? transactionTime = 210000;
var agreementDate = DateTime.Today;
var previousDate = agreementDate.AddDays(-1);
var agreementHour = 22;
var agreementMinute = 0;
var agreementSecond = 0;
var startDate = new DateTime(previousDate.Year, previousDate.Month, previousDate.Day, agreementHour, agreementMinute, agreementSecond);
var endDate = new DateTime(agreementDate.Year, agreementDate.Month, agreementDate.Day, agreementHour, agreementMinute, agreementSecond);
DateTime selectedDate = Convert.ToDateTime(transactionDate.ToString().Substring(6, 2) + "/" + transactionDate.ToString().Substring(4, 2) + "/" + transactionDate.ToString().Substring(0, 4) + " " + string.Format("{0:00:00:00}", transactionTime));
Console.WriteLine("Selected Date : " + selectedDate.ToString());
Console.WriteLine("Start Date : " + startDate.ToString());
Console.WriteLine("End Date : " + endDate.ToString());
if (selectedDate > startDate && selectedDate <= endDate)
Console.WriteLine("Between two dates..");
else if (selectedDate <= startDate)
Console.WriteLine("Less than or equal to the start date!");
else if (selectedDate > endDate)
Console.WriteLine("Greater than end date!");
else
Console.WriteLine("Out of date ranges!");
}