古代时辰计时与现代时间换算
本人对各种算法感兴趣,喜欢做一些算法题。可能有朋友对古代时辰计时与现在时间换算感兴趣,我就设计了此一种算法。
关于古代的时间表达法,也就是十二时辰法,从子丑......亥十二个时辰计时由来以久,自古以来就用此法计时,但对每个时辰分几刻,有变迁,主要有十二时辰分百二十刻和分为一百刻两种。古代长期使用的是百刻制。明末西方天文学传入,到清朝确定每日九十六刻,每刻十五分钟,开始与世界通行时间接轨。
各分刻法对计时没什么差别,就是计数而已。
唐以前一个时辰分十刻或八刻,唐以后明确为八刻,每时辰前四刻为初,后四刻为正,如辰初一刻( 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 ;
}//时辰换算
古代时辰计时与现代时间换算相关推荐
- 时间换算-本题要求编写程序,以hh:mm:ss的格式输出某给定时间再过n秒后的时间值(超过23:59:59就从0点开始计时)。
本题要求编写程序,以hh:mm:ss的格式输出某给定时间再过n秒后的时间值(超过23:59:59就从0点开始计时). 输入格式: 输入在第一行中以hh:mm:ss的格式给出起始时间,第二行给出整秒数n ...
- php换算古代时间对照表查询,phpGrace 工具类库 - 日期时间换算类
功能描述 日期时间换算,时间戳.时间差.过去时间计算. 部署说明下载 timer.php 部署到 phpGrace/tools 文件夹下. 使用说明 当前年份 currentYear()$timer ...
- 习题9-1 时间换算
习题9-1 时间换算 (15 分) 本题要求编写程序,以hh:mm:ss的格式输出某给定时间再过n秒后的时间值(超过23:59:59就从0点开始计时). 输入格式: 输入在第一行中以hh:mm:ss的 ...
- 古代中国使用计算机工具叫什么,古代四大计时工具是什么
中国古代的计时的仪器和工具分别是: 一.圭表:又称,日晷,日规.圭表中的"表"是一根垂直立在地面的标竿或石柱:"圭"是从表的跟脚上以水平位置伸向北方的一条石板. ...
- PTA - 时间换算
时间换算 题目:本题要求编写程序,以hh:mm:ss的格式输出某给定时间再过n秒后的时间值(超过23:59:59就从0点开始计时). 输入格式: 输入在第一行中以hh:mm:ss的格式给出起始时间,第 ...
- 浙江大学PTA C语言-实验9 结构程序设计 7-2 时间换算
7-2 时间换算 (15分) 本题要求编写程序,以hh:mm:ss的格式输出某给定时间再过n秒后的时间值(超过23:59:59就从0点开始计时). 输入格式: 输入在第一行中以hh:mm:ss的格式给 ...
- 中国大学MOOC-C程序设计(浙大翁恺)—— 时间换算
时间换算(10分) 题目内容: UTC是世界协调时,BJT是北京时间,UTC时间相当于BJT减去8.现在,你的程序要读入一个整数,表示BJT的时和分.整数的个位和十位表示分,百位和千位表示小时.如果小 ...
- 时间换算_只愿与一人十指紧扣_新浪博客
1 时间换算(10分) 题目内容: UTC是世界协调时,BJT是北京时间,UTC时间相当于BJT减去8.现在,你的程序要读入一个整数,表示BJT的时和分.整数的个位和十位表示分,百位和千位表示小时.如 ...
- c语言oj1124,程序设计入门——C语言 第2周编程练习 1时间换算(5分)
1 时间换算(5分) 题目内容: UTC是世界协调时,BJT是北京时间,UTC时间相当于BJT减去8.现在,你的程序要读入一个整数,表示BJT的时和分.整数的个位和十位表示分,百位和千位表示小时.如果 ...
最新文章
- 项目开发中关于jquery中出现问题小结(textarea,disabled,关键字等)
- 中国水果加工行业产销格局与开发价值分析报告2022版
- java 数组参数_java中 数组可以作为形式参数传递到调用的方法中吗?要怎么操作?...
- 信息发布webpart——网页编辑器应用攻略
- c# list转为json_ASP.net把datatable与list转成json输出
- php缓存实例,一个PHP缓存类实例
- 前端学习(142):行级标签和块级标签
- Linux网络服务器epoll模型的socket通讯的实现(一)
- Oracle的REDO和UNDO
- 论文Attention-guided CNN for image denoising解读
- 解读灰度直方图的信息
- 使用BCDboot工具,修复windows 系统启动,双启动菜单丢失故障
- Android 救援模式(Rescue Mode)原理剖析
- 计算机网络实验三:使用网络协议分析器捕捉和分析协议数据包
- p2p显示kad能连接 服务器未连接,Vagaa为什么kad(或ed2k)节点总是不能正常连接...
- 自然风景Mac高清动态壁纸分享来了
- 2022数学建模高教杯国家一等奖经验分享
- 使用rufus制作Windows Server 2012 R2 U盘_wentfar·tsao
- 小程序设置边框border
- HTML下拉菜单改变颜色,CSS下拉菜单中字体颜色问题