wujunxian 发表于 2016-7-19 14:41:12

TDT与TOT

       TDT为时间和日期表(Time&Date Table),它仅传送UTC时间和日期信息。并且TDT仅包含一个段,其结构如下:
time_date_section(){
table_id                                          //8                      uimsbf                                                
Section_syntax_indicator             //1                        bslbf             通常设为“1”
Reserved_future_use                     // 1                        bslbf
Reserved                                        // 2                        bslbf
Section_length                              //12                      uimsbf               见注释
UTC_time                                     //      40                      bslbf                     见注释
}
UTC_time(UTC时间):40位字段,包含以UTC和MJD形式表示的当前时间和日期。此字段前16位为MJD日期码,后24位按4位BCD编码,表示6个数字。如:93/10/13 12:45:00被编码为“0xC079124500”。

      TOT为时间偏移表(Time Offset Table),它包含了UTC时间和日期信息及当地时间偏移。传输此表的TS包PID为0x0014,table_id=0x73。下面给出了时间偏移段的结构:
time_offset_section(){
table_id                                       //   8                      uimsbf                                                
section_syntax_indicator            //   1                        bslbf         通常设为“1”
reserved_future_use               //   1                        bslbf
reserved                                     //    2                        bslbf
section_length                           //   12                      uimsbf               见注释
UTC_time                                 //      40                      bslbf                     见注释
reserved                                     //    4                         bslbf
descriptors_loop_length            //    12                  uimsbf            
for(i=0;i<N;i++){
    descriptor()
}
CRC_32                                       //32                  rpchof                  见注释
}
这里的UTC_time和TDT表是一致的,都是以UTC和MJD形式表示当前时间和日期;其格式也与TDT的UTC_time相同,这里不再赘述。需要特别注意的是这里的描述符descriptor()。下面给出了本地时间偏移描述符的结构:
local_time_offset_descriptor(){
descriptor_tag                         8         uimsbf         
descriptor_length               8         uimsbf   
for(i=0;i<N;i++){
    coutry_code                           24             bslbf
    country_region_id                  6             bslbf
    reserved                                  1             bslbf
    local_time_offset_polarity       1             bslbf
    local_time_offset                  16            bslbf
    time_of_change                      40            bslbf
    next_time_offset                     16            bslbf
}
}
国家代码country_code为24位字段,按照ISO 3166用3字符代码指明国家。每个字符根据GB/T 15273.1-1994编码为8位,并依次插入24位字段。假设3个字符代表了一个900至999的数字,那么country_code指定了一组ETSI定义的国家。其分配见ETR 162。国家组的国家代码应该被限制在同一时区内。
例如:英国由3字符代码“GBR”表示,编码为:“01000111 0100 0010 0101 0010”。

国家区域标识符country_region_id为6位字段,表示country_code指明的国家所在的时区。若国家内部里没有时差,则置“000000”。
country_region_id 描述
00 0000 未使用时区扩展
00 0001 时区1(最东部)
00 0010 时区2
…….. ……..
11 1100 时区 60
11 1101 – 11 1111 预留

本地时间偏移极性 local_time_offset_polarity,1位字段,用于指明随后的local_time_offset的极性。置“0”时,极性为正,说明本地时间早于UTC时间(通常在格林威治以东);置“1”时,极性为负,说明本地时间晚于UTC时间。
本地时间偏移 local_time_offset,16位字段,指出由country_code和country_region_id确定的区域的相对于UTC的时间偏移,范围为-12小时至+13小时。16比特含有4个4位BCD码,顺序为小时的十位,小时的个位,分的十位,分的个位。
时间变化time_of_change,40位字段,指明时间改变时当前的日期(MJD)与时间(UTC),见附录C。该字段分为两部分,前16位给出了LSB格式的日期(MJD),后24位给出了UTC时间(6个4位BCD码)。
下一时间偏移next_time_offset,16位字段,指出由country_code和country_region_id确定的区域,当UTC时间变化时的下一个时间偏移,范围为-12小时至+13小时。此16比特域为4个4位BCD码,依次为时的十位,时的个位,分的十位,分的个位。

bean.yang 发表于 2016-7-22 09:12:05

科普科普

halleyhuang 发表于 2016-7-25 18:06:42

技术大牛贴

HaoQiao 发表于 2016-8-8 17:59:24

:victory::victory::victory:
页: [1]
查看完整版本: TDT与TOT