c# TimeSpan 将分钟转换为小时

问题描述 投票:0回答:9

我正在将分钟转换为小时。所以如果我有

minutes = 12534
。结果应该是
208:54
。下面的代码无法带来这个结果。

TimeSpan spWorkMin = TimeSpan.FromMinutes(12534);
string workHours = spWorkMin.ToString(@"hh\:mm");
Console.WriteLine(workHours);

结果是

16:54

如何获得正确的结果?

c# timespan
9个回答
16
投票
var totalMinutes = 12534;
Console.WriteLine("{0:00}:{1:00}", totalMinutes / 60, totalMinutes % 60);

或者

var totalMinutes = 12534;
var time = TimeSpan.FromMinutes(totalMinutes);
Console.WriteLine("{0:00}:{1:00}", (int)time.TotalHours, time.Minutes);

请参阅 https://dotnetfiddle.net/gYEsj2 来玩这个


14
投票

正确的使用方法不是使用

ToString
DateTime
重载 – 因为不可能在那里显示
TotalHours
– 而是使用
string.Format
方法:

string.Format("{0:00}:{1:00}", (int)spWorkMin.TotalHours, spWorkMin.Minutes);

4
投票

您需要使用

TimeSpan.TotalHours
属性

TotalHours 属性代表整个小时和小数小时,而

Hours
属性代表整个小时。

    TimeSpan spWorkMin = TimeSpan.FromMinutes(12534);
    string workHours = spWorkMin.ToString(@"hh\:mm");
    Console.WriteLine(spWorkMin.TotalHours);

https://dotnetfiddle.net/JRCLra


1
投票

格式说明符

hh
将显示小时部分,而不是总小时数。您必须使用
TotalHours
转换为整数来手动创建一个字符串,以按您想要的方式显示它,并添加分钟。


0
投票
TimeSpan spWorkMin = TimeSpan.FromMinutes(12534);
string workHours = string.Format("{0}:{1}", (int)spWorkMin.TotalHours, spWorkMin.Minutes);
Console.WriteLine(workHours);

0
投票

来自 MSDN 文档:

“hh”自定义格式说明符输出 TimeSpan::Hours 属性的值,该值表示时间间隔中不计入其日部分的整小时数。

获得您想要的结果的一种快速方法如下:

TimeSpan spWorkMin = TimeSpan.FromMinutes(12534);
string workHours = string.Format("{0}:{1:00}", (int)spWorkMin.TotalHours, spWorkMin.Minutes);
Console.WriteLine(workHours);

0
投票

我个人用这个:

public static double MinutsTohHours(int Minuti)
    {
        double Tempo = 0;
            Tempo = ((double)(Minuti % 60) / 100);
            var n = (double)Minuti / 60;
            return Math.Floor((double)Minuti / 60) + Tempo;
       
    }

0
投票
using System;

var days = 1; 
var hours = 23; //max 23
var min = 12; //max 59

var TotalMin = (days*24*60)+(hours*60)+min;

Console.WriteLine("TotalMins "+ TotalMin);

//return back to the original days,hours,minutes

var Days = (TotalMin/(24*60));
var _minutes = (TotalMin%(60*60));
var Hours = (_minutes/60);
var Minutes = _minutes - (Hours*60);

Console.WriteLine($"{Days} , {Hours} , {Minutes}");

0
投票

我需要以以下格式显示总小时和分钟:HH:mm。 使用下面的扩展方法。

public static string TohhmmFormatString(this TimeSpan timeSpan)
{
    string totalHours = ((int)timeSpan.TotalHours).ToString();
    string minutes = timeSpan.Minutes.ToString();
    if (timeSpan.Seconds == 59 && (timeSpan.Milliseconds == 999 || timeSpan.Microseconds == 999))
    {
        if (timeSpan.Minutes + 1 == 60)
        {
            minutes = "00";
            totalHours = ((int)timeSpan.TotalHours + 1).ToString();
        }
        else
        {
            minutes = (timeSpan.Minutes + 1).ToString();
        }
    }
    return $"{totalHours}:{minutes}";
 }
© www.soinside.com 2019 - 2024. All rights reserved.