1

我将收到一串分钟,我想将其转换为花费的总时间。

如果是 90 分钟,我想将其转换为 1 小时 30 分钟。

如果是 150 分钟,我希望它转换为 2 小时 30 分钟。

这是我到目前为止所拥有的:

DataTable data = GeneralFunctions.GetData( query );
object sumObject;
sumObject = data.Compute( "Sum(Minutes_Spent)", "" );
if ( reportType == 1 )
{
    RepeaterPCBillable.DataSource = data;
    RepeaterPCBillable.DataBind();
    LabelPCBillable.Text = sumObject.ToString();
}
else

我不确定是否有一些内置的时间函数会产生我需要的结果,或者我是否需要进行某种类型的除法。

4

4 回答 4

4

没有内置任何东西。

您将需要为您的字符串编写自己的解析例程。

C# 中的示例:

// assumes input is valid for integer parsing
int totalMinutes = int.Parse(inputString);
int hours = totalMinuts / 60;
int minutes = totalMinutes % 60;
于 2012-05-03T15:00:30.513 回答
2

您可以使用TimeSpan.FromMinutes,然后从中检索小时和分钟。

var span = TimeSpan.FromMinutes(int.Parse(inputString));
var hours = span.Hours;
var minutes = span.Minutes;
于 2012-05-03T15:01:45.660 回答
1

没有什么内置的,但并不难做到。让我们一步一步来。这是我们的示例输入:

var input = "130 minutes";

现在我们使用正则表达式来提取前面的数字minutes

var match = Regex.Match(input, @"^(\d+) minutes$");
if (!match.Success)
    throw new Exception("Invalid input format");

然后,我们将带有分钟的字符串转换为整数:

var minutes = int.Parse(match.Groups[1].Value);    // now contains 130

接下来,我们使用整数除法和模运算来分割小时和分钟:

var hours = minutes / 60;
minutes = minutes % 60;

最后,我们可以再次将结果格式化为字符串:

var result = String.Format("{0} hours and {1} minutes", hours, minutes);  // 2 hours and 10 minutes
于 2012-05-03T15:08:59.367 回答
0

好吧,这是一个通用算法:

int hours=string_minutes/60;
int minutes=string_minutes%60;

基本上第一个操作给你商数,然后第二个给你余数/

于 2012-05-03T15:02:30.120 回答