Javascript 是否有一种简单的方法可以将秒转换为ISO 8601格式,以便在schema.org视频元数据中使用?

Javascript 是否有一种简单的方法可以将秒转换为ISO 8601格式,以便在schema.org视频元数据中使用?,javascript,c#,jquery,html,Javascript,C#,Jquery,Html,我正在尝试使用谷歌建议的视频搜索结果的html标记。他们建议使用schema.org标记进行搜索引擎优化 以下行用于持续时间: 根据Google和Schema.org——“ISO 8601格式视频的持续时间”,时间必须为ISO 8601格式 我有一些jquery,它从html5视频元素中提取视频的持续时间。提取的持续时间以秒为单位 将秒转换为ISO 8601格式的最佳方式是什么 在C#、Javascript或JQuery中是否有一些东西可以轻松完成此任务 谢谢在C语言中,您可以使用TimeSp

我正在尝试使用谷歌建议的视频搜索结果的html标记。他们建议使用schema.org标记进行搜索引擎优化

以下行用于持续时间:

根据Google和Schema.org——“ISO 8601格式视频的持续时间”,时间必须为ISO 8601格式

我有一些jquery,它从html5视频元素中提取视频的持续时间。提取的持续时间以秒为单位

将秒转换为ISO 8601格式的最佳方式是什么

在C#、Javascript或JQuery中是否有一些东西可以轻松完成此任务

谢谢

在C语言中,您可以使用TimeSpan和自定义格式字符串:

var duration = TimeSpan.FromSeconds(secs);

string iso8601 = duration.ToString("'P'd'DT'h'H'm'M's'S'");

(注意,我实际上没有运行这个)

Jquery对于获得这个结果不是必需的。但是,JavaScript可以用于此目的

首先,您可以在date类中使用
toISOString()
函数:

var date = new Date();
date.toISOString();
但是,并非所有浏览器都支持这一点,因为它是ECMAScript 5的一部分(大多数浏览器都支持,但需要谨慎)。因此,您可以编写备份来执行此操作,如下所示:

if ( !Date.prototype.toISOString ) {
  ( function() {

    function pad(number) { // Add leading zero if necessary
      var r = String(number);
      if ( r.length === 1 ) {
        r = '0' + r;
      }
      return r;
    }

    Date.prototype.toISOString = function() { // Return the date as a ISO string
      return this.getUTCFullYear()
        + '-' + pad( this.getUTCMonth() + 1 )
        + '-' + pad( this.getUTCDate() )
        + 'T' + pad( this.getUTCHours() )
        + ':' + pad( this.getUTCMinutes() )
        + ':' + pad( this.getUTCSeconds() )
        + '.' + String( (this.getUTCMilliseconds()/1000).toFixed(3) ).slice( 2, 5 )
        + 'Z';
    };

  }() );
}

现在,您只需运行javascript。

不知何故,我感觉如果您要“使用jQuery提取视频的持续时间”,没有搜索引擎会检测到它。我从视频元素提取持续时间数据,并将其加载到以下标记中。没错。我的脑子乱七八糟。我正试图找出从mp4获取视频持续时间并将其显示在metatag上的最佳方法。我只需要谷歌看看。如果我提取持续时间并在pageload上使用javascript写出一个元标记,谷歌爬行器应该会看到标记,对吗?
PT1M33S
相当于
PT93S
,两者都是有效的ISO 8601持续时间。您需要做的就是:
“PT”+秒+“S”