Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.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/4/string/5.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# string.Replace();有两个案例如何解析时间字符串_C#_String_Replace - Fatal编程技术网

C# string.Replace();有两个案例如何解析时间字符串

C# string.Replace();有两个案例如何解析时间字符串,c#,string,replace,C#,String,Replace,我有一个时间选择器,它返回给我的时间像:“0:00am”。但是我需要在我的应用程序中从一个完成时间中减去一个开始时间,并检查它是否已经过了一个小时,两个小时 为了只获取计时器的编号,我做了以下操作: string StartTime = _pickerStarts.Text; string StartTime_int = string.Empty; int _starts = 0; for (int i = 0; i < StartTime

我有一个时间选择器,它返回给我的时间像:“0:00am”。但是我需要在我的应用程序中从一个完成时间中减去一个开始时间,并检查它是否已经过了一个小时,两个小时

为了只获取计时器的编号,我做了以下操作:

string StartTime = _pickerStarts.Text;
        string StartTime_int = string.Empty;
        int _starts = 0;

        for (int i = 0; i < StartTime.Length; i++)
        {
            if (Char.IsDigit(StartTime[i]))
                StartTime_int += StartTime[i];
        }

        if (StartTime_int.Length > 0)
            _starts = int.Parse(StartTime_int);


        string EndsTime = _pickerEnds.Text;
        string EndsTime_int = string.Empty;
        int _ends = 0;

        for (int i = 0; i < EndsTime.Length; i++)
        {
            if (Char.IsDigit(EndsTime[i]))
                EndsTime_int += EndsTime[i];
        }

        if (EndsTime_int.Length > 0)
            _ends = int.Parse(EndsTime_int);

        // this return method is returning with the 00 on 4:00AM (example). CHANGE IT.
        return _ends - _starts;
我必须这样做:30小时

string StarTime_Formated = StartTime.Replace(":00", ",3");
但是我必须先检查字符串内容,然后格式化它。有没有办法做到这一点(伪代码):

EDIT:响应下面的注释:嗯,我使用的组件返回一个字符串。这是为了控制上课时间。一节课可以是每周两次,每节课1小时,或者每周一次,每节课2小时。如果我这样做:

if(_numDuration.Value == 2 && ClassDuration() == 2)
ClassDuration()
是本文中的第一个代码,并且
\u numDuration
是一个
整数下降
来选择1或2小时的课程

方法将返回,例如“4:00pm”和“6:00pm”,600-400,这比2高很多。我需要它返回2。正如我所说,我可以做两种不同的
并检查每个案例,但我想知道我是否不能只
字符串StarTime\u formatted=StartTime.Replace(“:00”,”,3“&&&&“:00”,”)

如果可以的话,我会使用DateTime,但你看,它不是我的应用程序,而且。。。命令。真糟糕


我可以这样做吗,还是应该只保留两个分开的
.Replace()
,然后检查案例?

您试图解决的问题是如何解析时间字符串

这是一个棘手的问题,需要正确地编写几行代码。让DateTime帮你做吧

var start= DateTime.Parse(_pickerStarts.Text);
var end= DateTime.Parse(_pickerEnds.Text);
var result= end-start;
var resultInHours= result.TotalHours;
Console.WriteLine(result);
Console.WriteLine(resultInHours);
----------------------------------------

但是,对于字符串替换,您的问题中可能有输入错误。你想要:

string StarTime_Formated = StartTime.Replace(":30", ",3").Replace(":00", "");

您试图解决的问题是,如何解析时间字符串

这是一个棘手的问题,需要正确地编写几行代码。让DateTime帮你做吧

var start= DateTime.Parse(_pickerStarts.Text);
var end= DateTime.Parse(_pickerEnds.Text);
var result= end-start;
var resultInHours= result.TotalHours;
Console.WriteLine(result);
Console.WriteLine(resultInHours);
----------------------------------------

但是,对于字符串替换,您的问题中可能有输入错误。你想要:

string StarTime_Formated = StartTime.Replace(":30", ",3").Replace(":00", "");
试试这个(你可能需要调整格式,但应该可以)

试试这个(你可能需要调整格式,但应该可以)


如果((endTime-startTime).TotalHours>1)
,等等,这有什么不对?@itsme86我认为问题在于两者都是字符串What??DateTimePicker具有值属性。它是DateTime,DateTime具有分钟、小时、秒属性。无需解析任何内容如果您谈论的是WPF时间选择器,那么同样,有一个时间属性是TimeSpan,您可以使用它获取值或对另一个TimeSpan执行计算如果您不能使用DateTime控件,您仍然可以使用DateTime.parse()方法为你做所有艰苦的工作只要
if((endTime-startTime).TotalHours>1)
等等有什么不对?@itsme86我相信问题在于两者都是字符串what??DateTimePicker具有值属性。它是DateTime,DateTime具有分钟、小时、秒属性。无需解析任何内容如果您谈论的是WPF时间选择器,那么同样,有一个时间属性是TimeSpan,您可以使用它获取值或对另一个TimeSpan执行计算如果您不能使用DateTime控件,您仍然可以使用DateTime.parse()方法为你做所有艰苦的工作,真的很欣赏答案,但它不是日期时间,我正在处理的是字符串。我只是想知道我是否可以在一个.Replace()方法中对两种不同的情况执行.Replace()。您注意到我是以字符串开头的吗?很抱歉,请重新阅读刚才的答案。我很快就会做,并检查它是否有效。真的很欣赏答案,但它不是日期时间,我正在处理的是字符串。我只是想知道我是否可以在一个.Replace()方法中对两种不同的情况执行.Replace()。您注意到我是以字符串开头的吗?很抱歉,请重新阅读刚才的答案。我会尽快检查它是否有效。
var startDate = DateTime.ParseExact(your_start_time_string, "hh:mma", CultureInfo.InvariantCulture);
var endDate = DateTime.ParseExact(your_end_time_string, "hh:mma", CultureInfo.InvariantCulture);
var r = endDate-startDate;
//do further processing on result