You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将JavaScript音频播放器时间戳转换为C# TimeSpan?

两种时间格式规范与转换实现

一、两种格式的规范说明

1. C# TimeSpan字符串格式

  • 格式规则:hh:mm:ss.fffffff(小时:分钟:秒.7位小数)
  • 细节:
    • 小时部分支持超过24的数值(因为TimeSpan可表示跨天的时间间隔)
    • 7位小数对应.NET TimeSpan的100纳秒精度刻度:每一位小数代表100纳秒,比如.0840000就是840毫秒(8400000 × 100纳秒 = 840毫秒)
    • 这是.NET默认的TimeSpan序列化/反序列化格式,属于ISO 8601时间间隔规范的兼容简化格式

2. JavaScript音频播放器返回的数值格式

  • 格式规则:一个浮点数,代表时间间隔的总秒数
  • 细节:
    • 整数部分是总秒数,小数部分包含毫秒及更高精度(比如226.539319即226秒 + 539.319毫秒)
    • 精度通常为微秒级(6位小数),具体取决于音频播放器API的实现
    • 本质是将时间间隔统一转换为以秒为单位的十进制数值,便于直接计算

二、双向转换实现

1. JavaScript:总秒数转C#风格TimeSpan字符串

function secondsToTimeSpanString(seconds) {
    const totalSeconds = Math.abs(seconds);
    const hours = Math.floor(totalSeconds / 3600);
    const remainingAfterHours = totalSeconds % 3600;
    const minutes = Math.floor(remainingAfterHours / 60);
    const remainingSeconds = remainingAfterHours % 60;

    // 拆分秒的整数与小数部分,补全至7位小数
    const secInt = Math.floor(remainingSeconds);
    const secDec = (remainingSeconds - secInt).toFixed(7).slice(2);

    // 格式化补零(小时允许超过两位,不强制补零)
    const formattedHours = hours.toString().padStart(2, '0');
    const formattedMinutes = minutes.toString().padStart(2, '0');
    const formattedSecInt = secInt.toString().padStart(2, '0');

    const result = `${formattedHours}:${formattedMinutes}:${formattedSecInt}.${secDec}`;
    return seconds < 0 ? `-${result}` : result;
}

// 示例调用
console.log(secondsToTimeSpanString(226.539319)); // 输出 "00:03:46.5393190"
console.log(secondsToTimeSpanString(5.084)); // 输出 "00:00:05.0840000"

2. C#:TimeSpan字符串转总秒数(浮点数)

using System;

public class TimeConverter
{
    public static double TimeSpanStringToTotalSeconds(string timeSpanStr)
    {
        if (TimeSpan.TryParse(timeSpanStr, out var span))
        {
            return span.TotalSeconds;
        }
        throw new FormatException("无效的TimeSpan字符串格式");
    }

    // 示例调用
    public static void Main()
    {
        Console.WriteLine(TimeSpanStringToTotalSeconds("00:00:05.0840000")); // 输出 5.084
        Console.WriteLine(TimeSpanStringToTotalSeconds("00:03:46.5393190")); // 输出 226.539319
    }
}

3. C#:总秒数转TimeSpan字符串

public static string TotalSecondsToTimeSpanString(double totalSeconds)
{
    var span = TimeSpan.FromSeconds(totalSeconds);
    return span.ToString(@"hh\:mm\:ss\.fffffff");
}

// 示例调用
Console.WriteLine(TotalSecondsToTimeSpanString(5.084)); // 输出 "00:00:05.0840000"

内容的提问来源于stack exchange,提问作者sylargaf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 18:20:20