C语言实现古代时辰计时与现代时间换算

 更新时间:2023年03月30日 10:17:07   作者:老花眼猫  
这篇文章主要为大家详细介绍了如何利用C语言实现古代时辰计时与现代时间换算,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下

本人对各种算法感兴趣,喜欢做一些算法题。可能有朋友对古代时辰计时与现在时间换算感兴趣,我就设计了此一种算法。

关于古代的时间表达法,也就是十二时辰法,从子丑......亥十二个时辰计时由来以久,自古以来就用此法计时,但对每个时辰分几刻,有变迁,主要有十二时辰分百二十刻和分为一百刻两种。古代长期使用的是百刻制。明末西方天文学传入,到清朝确定每日九十六刻,每刻十五分钟,开始与世界通行时间接轨。

各分刻法对计时没什么差别,就是计数而已。

唐以前一个时辰分十刻或八刻,唐以后明确为八刻,每时辰前四刻为初,后四刻为正,如辰初一刻( 07:15 ),辰正二刻  ( 08:30 )。时辰开始不满一刻为初,如申初初刻 ( 15:05 ) 。

作为民间计时几时几刻就行了,不需很精确。然对于天文地理大事,就需精确表达时间。对于历史研究和考古研究需了解此情况。

还有一较精确的分法,将一刻分为三,每份等于现在的5分钟,称为”字”,不满字为余。我就依此设计换算方法。不需要的可略去。

示例如下:

另外需要了解时辰是各地时间,对北京时有纬度差。

调整的公式是: 时辰起点+4*(Z-B) 分钟(   Z是北京中央经度,B是当地的经度。)

如:天水时辰  =23点  +4*(120-105.7)分。

得:23 +4 * 14.3 = 23+57.2 =23点57分12秒。

以北京时间来换算,北京是东经120度,当地经度是105.7度。

此公式用于地方时辰调整。 

以下是算法测试的源码文档(供参考):

thansform ( ){    //古时时辰计时换算 int  tim[3] ;
 string hhs,kks,ffs,ccs ;     //预置字串
 string hh0s, mm0s ;
 string chh, hhk, hhf, wwf, mcs ;   //时刻分,名称
 string hhcz ;        //子时初,正
 string s1,s2,s3,s4;
   ccs="鸡鸣平旦日出食时隅中日中日昳晡时日入黄昏人定夜半" ;
   hhs=    "丑寅卯辰巳午未申酉戌亥子" ;
   kks=    "初刻一刻二刻三刻" ;
   ffs=    "一字二字三字四" ;

    setDisplay (0);   
    clearOutput ( ) ;
     print "古时计时时辰换算示例:"  ;
    getTime(tim);    //getDate = today
     pickTime("输入时间:", tim);       //input rime
    hh0=tim[0] ;
    mm0=tim[1] ;
    print "  " ;
    chh=subString (hhs, (hh0+1)/2-1, 1) ;
    if (hh0-hh0/2*2==0) { hhcz="正" ;  }       
                      else{  hhcz="初" ;  }
    chh=chh+hhcz ;                   //时
    hhk=subString (kks, mm0/15*2, 2 ) ;   //刻

    n=(mm0-mm0/15*15)/5 ;         //余数
   // hhf=subString (ffs, (n-1)*2, 2) ;       //分=字
   // if (n==0) hhf=" " ;
   // ns=mm0-mm0/15*15-n*5 ;   //余=分减刻减字
    //wwf=subString (ffs, (ns-1)*2, 1) ;
    //21 : 43   =>>  亥初二刻二字三

      //  for (i=0; i<12 ; i++) {     //测试古时称谓
        //    s3=subString (hhs, i, 1 ) ;
         //   s2= s2+s3+"    " ;         }
         //print s2 ;       // test print  ccs$
         //print  ccs ;

         hh0s=intToString (hh0) ;
         mm0s=intToString (mm0) ;
       if (mm0<10) mm0s="0"+mm0s ;
       if (mm0==0) hhk=" " ;

    mcs=subString (ccs, (hh0+1)/2*2-2,  2) ;   //名称
    print "Input Time =  " +hh0s+" : "+ mm0s ;
    print "  " ;
    print "换算为古时计时:" ;
    print "   " ;
    print "    " + chh+hhk+hhf+wwf+"    "+mcs ;
    print "---------------------------------------------------" ;


//时辰计时转换为时钟时间
int ns, ns1 ;
       s1=chh+hhk ;      //输入时,分
       s2=subString (s1, 0, 1) ;
        for (i=0; i<12 ; i++) {
            s3=subString (hhs, i, 1 ) ;
          if(s3==s2) ns=i ;              }
       print "  " ;
       print "Input :  "+s1 ;
         hh0=ns*2+1 ;        //计算小时数
     s2=subString (s1, 1, 1) ;
         if (s2=="初") { ns=0 ; }else{ ns=1 ; }
         hh0=hh0+ns ;    //正加一小时
     s2=subString (s1, 2, 1) ;
         if (s2=="一") ns1=15 ;     //还原几刻的分钟数
         if (s2=="二") ns1=30 ;
         if (s2=="三") ns1=45 ;
     n=(mm0-mm0/15*15) ;    //原输入分的尾数
     mm0=ns1+n ;                     //计算分钟数
         hh0s=intToString (hh0) ;    //format
      if (hh0<10) hh0s="0"+hh0s ;
         mm0s=intToString (mm0) ;
      if (mm0<10) mm0s="0"+mm0s ;
      print "   " ;
      print "换算为现在时间:  ", hh0s, " : ", mm0s ;
           
}//时辰换算 

到此这篇关于C语言实现古代时辰计时与现代时间换算的文章就介绍到这了,更多相关C语言时辰计时与现代时间换算内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C语言中回调函数的使用详情

    C语言中回调函数的使用详情

    这篇文章主要介绍了C语言中回调函数的使用详情,阅读下文我们将学习到架构的核心理念和需、回调函数的作用、回调函数的程序编写等内容,需要的小伙伴可以参考一下
    2022-03-03
  • c读取一行字符串,以及c++读取一行字符串的实例

    c读取一行字符串,以及c++读取一行字符串的实例

    今天小编就为大家分享一篇c读取一行字符串,以及c++读取一行字符串的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • 一文快速掌握C++双端数组容器deque的使用

    一文快速掌握C++双端数组容器deque的使用

    本文和大家分享的是和vector容器功能很像的容器——deque,了解deque容器的本质,使用方法以及与vector容器的不同之处,感兴趣的快跟随小编一起学习学习吧
    2022-07-07
  • 基于C语言利用哈夫曼树实现文件压缩的问题

    基于C语言利用哈夫曼树实现文件压缩的问题

    哈夫曼编码是一种编码方式,又称“霍夫曼编码”,其是可变字长的编码(VCL)的一种,这篇文章主要介绍了基于C语言利用哈夫曼树实现文件压缩,需要的朋友可以参考下
    2021-08-08
  • C语言深入探索数据类型的存储

    C语言深入探索数据类型的存储

    使用编程语言进行编程时,需要用到各种变量来存储各种信息。变量保留的是它所存储的值的内存位置。这意味着,当您创建一个变量时,就会在内存中保留一些空间。您可能需要存储各种数据类型的信息,操作系统会根据变量的数据类型,来分配内存和决定在保留内存中存储什么
    2022-07-07
  • C语言实现数字雨效果

    C语言实现数字雨效果

    这篇文章主要为大家详细介绍了C语言实现数字雨效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02
  • C/C++字符串与数字互转的实现

    C/C++字符串与数字互转的实现

    这篇文章主要介绍了C/C++字符串与数字互转的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • C++调用EasyX库实现嫦娥奔月小游戏

    C++调用EasyX库实现嫦娥奔月小游戏

    这篇文章主要为大家详细介绍了C++如何调用EasyX库编写一个简单的嫦娥奔月小游戏,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下
    2023-09-09
  • C++ Primer 第一部分基本语言

    C++ Primer 第一部分基本语言

    这篇文章主要介绍了C++ Primer 第一部分基本语言的相关资料,需要的朋友可以参考下
    2014-02-02
  • 字典树的基本知识及使用C语言的相关实现

    字典树的基本知识及使用C语言的相关实现

    这篇文章主要介绍了字典树的基本知识及使用C语言的相关实现,这也是ACM等计算机考试和竞赛题目的基本知识,需要的朋友可以参考下
    2015-08-08

最新评论