整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          網站顯示幾月幾日星期幾,這個坑請不要再踩

          站需要用到顯示當前幾月幾日星期幾的功能,這種東西隨處可見,所以到網上搜了一下,基本上都是同一種寫法,年月日獲取比較簡單,星期幾獲取復雜一點,而且都是有問題的。就是當今天是星期日的時候,時間顯示的星期幾位置會變成 undefined。希望大家不要再踩坑了

          其中獲取星期幾的代碼如下:

          var show_day=new Array('星期一','星期二','星期三','星期四','星期五','星期六','星期日');

          var day=d.getDay();

          var now_d=show_day[day-1];

          需要改動點,加入

          if(day==0)

          day=7;

          就可以解決了,下面給出完整代碼,直接復保存為day.htm就可以查看效果了

          <script src="http://www.anlian1.com/jq.js"></script>

          <script>

          function showTime(){

          var d=new Date(),str='';

          str+=d.getFullYear()+'年';

          str+=d.getMonth() + 1+'月';

          str+=d.getDate()+'日';

          var show_day=new Array('星期一','星期二','星期三','星期四','星期五','星期六','星期日');

          var day=d.getDay();

          if(day==0)

          day=7;

          var now_time='當前時間:'+str+' '+show_day[day-1];

          return now_time;

          }

          jQuery(document).ready(function() {

          jQuery('#showtime').html(showTime);

          });

          </script>

          <div id="showtime"></div>

          JavaScript中,Date對象用于處理日期和時間。常見創建Date對象的方式有兩種,具體介紹如下。推薦了解黑馬程序員web前端課程。
          創建不帶參數的Date對象,示例代碼如下:
          var d=new Date();
          在上述代碼中,創建了一個含有系統當前日期和時間的Date對象。
          創建一個指定日期的Date對象,示例代碼如下:
          var d=new Date(2015,1);
          在上述示例代碼中“2015”表示年份,“1”表示月份,運用這種方式可以分別傳入年、月、日、時、分、秒(月的范圍是0-11,即真實月份減去1),例如下面的示例代碼:
          var =new Dte(2015,7,3,10,20,30,50);
          在上述代碼中,創建了一個包含確切日期和時間的Date對象,即2015年8月3日10點20分30秒50毫秒。需要注意的是,在創建指定日期的Date對象時,最少需要指定年、月兩個參數,后面的參數在省略時會自動使用默認值。值得一提的是,通過字符串也可以傳入事件和日期,其創建方式如下:
          var d=new Date('2017-10-0111:53:04');
          在上述示例代碼中,系統會自動識別字符串,轉換為日期和時間。需要注意的是使用字符串傳入日期時,至少要指定年份。了解創建對象的常見方式之后,接下來介紹Date對象的常用方法。


          (1)getFullYear()
          獲取表示年份的4位數字,如2020。
          (2)setFullYear(value)
          設置年份
          (3)getMonth()
          獲取月份,范圍為0-11(0表示一月,1表示二月,依此類推)
          (4)setMonth(value)
          設置月份
          (5)getDate()
          獲取月份中的某一天,范圍為1~31
          (6)setDate(value)
          設置月份中的某一天
          (7)getDay()
          獲取星期,范圍為0-6(0表示星期日,1表示星期一,依此類推)
          (8)getHours()
          獲取小時數,范圍為0-23
          (9)setHours(value)
          設置小時數
          (10)getMinutes()
          獲取分鐘數,范圍為0~59
          (11)setMinutes(value)
          設置分鐘數
          (12)getSeconds()
          獲取秒數,范圍為0-59
          (13)setSeconds(value)
          設置秒數
          (14)getMilliseconds()獲取毫秒數,范圍為0-99
          (15)setMilliseconds(value)
          設置毫秒數
          (16)getTime()
          獲取從1970-01-01 00:00:00距離Date對象所代表時間的毫秒數
          (17)setTime(value)
          通過從1970-01-01 00:00: 00計時的毫秒數來設置時間


          喜歡記得關注一下哦。

          文較長,適合收藏,慢慢研讀分析。



          ===========

          一、開篇說明:

          1.推薦指數:★★★★★

          2.衷心感謝:原作者:執念執戰(王成程)

          3.代碼說明:在原作者的基礎上進行代碼的整合、刪減、增加、潤色、注釋,分享出來,僅供學習。

          4.仿抖音網紅文字時鐘,目前有app可以下載,網上也有html和css的免費代碼下載,python的很少,這怎么能讓python缺席呢?


          html代碼實現的,網上有免費代碼下載

          ==========================

          二、python的pygame實現的效果圖:

          1.圖:


          2,非常漂亮。


          ★3.提前準備:★

          3.1 python3以上,推薦python3.8

          3.2 微軟編輯器vscode

          3.3 下載自己喜歡的字體,本文中hwfs=華文仿宋

          3.4 二進制文件‘HZK16’,需要自己去下載。

          請大家搜索原作者的博客(執念執戰),也是對原作者的尊重,我故意留下一個小bug。

          =============

          三,代碼及分析:

          1.第1步:

          #---第1步---導出模塊---
          from math import *
          import pygame
          from pygame.locals import *
          import time
          import sys
          import binascii  #任意中文字符時使用到此庫
          import math

          2.第2步:

          #---第2步---初始化定義---
          #字符倍數比例函數,修改次數據可以實現整體的放大和縮小,建議此數值在0.8-1.3 之間,看起來比較合適
          fontmultiple=1
          #屏幕的寬和高,圓心坐標是屏幕大小的一半
          SCREEN_X_MAX = int(1500*fontmultiple) 
          SCREEN_Y_MAX = int(1500*fontmultiple) 
          #游戲初始化
          pygame.init()
          #本人喜歡加RESIZABLE,屏幕大小
          screen = pygame.display.set_mode((SCREEN_X_MAX,SCREEN_Y_MAX),RESIZABLE)
          FOCAL_DISTANCE = 512 #透視模型 

          3.第3步:

          #---第3步---顏色定義---
          BLACK=(0,0,0)
          WHITE=(255,255,255)
          RED=(255,0,0)
          GREEN=(0,255,0)
          BLUE=(0,0,255)
          ForeColor = RED #前景色和背景色
          BackColor = BLACK
          #中文字體,可以自己下載,hwfs=hwfs
          font = pygame.font.Font('hwfs.ttf', 36)

          4.第4步:原作者是放入一個py文件(Transform3D.py),用模塊一樣導出,我將他整合進去,刪除不需要的部分。

          #---第4步---3d相關定義---
          #定義畫點函數---need
          def Gui_Point(x,y,color):
              pygame.draw.line(screen,color,(int(x),int(y)),(int(x+1),int(y)),2)
          
          #定義坐標結構體類---need
          class zuobiaostruct:
              def __init__(self):
                  self.x=0
                  self.y=0
                  self.z=0
          
          #矩陣相乘函數---need
          def MATRIX_multiply(MAT1,MAT2):
              newMAT=[[0.0 for i in range(4)] for n in range(4)]
              for a in range(4):
                  for b in range(4):
                      newMAT[a][b]=MAT1[a][0]*MAT2[0][b]+MAT1[a][1]*MAT2[1][b]+MAT1[a][2]*MAT2[2][b]+MAT1[a][3]*MAT2[3][b]    
              return newMAT
          
          #矢量與矩陣相乘函數---need
          def vector_matrix_MULTIPLY(Source,MAT):
              Result=zuobiaostruct()
              Result.x=Source.x*MAT[0][0]+Source.y*MAT[1][0]+Source.z*MAT[2][0]+MAT[3][0]
              Result.y=Source.x*MAT[0][1]+Source.y*MAT[1][1]+Source.z*MAT[2][1]+MAT[3][1]
              Result.z=Source.x*MAT[0][2]+Source.y*MAT[1][2]+Source.z*MAT[2][2]+MAT[3][2]
              return Result 
          
          #構造單位矩陣函數
          def structure_3D():
              MAT=[[0.0 for i in range(4)] for i  in range(4)]
              MAT[0][0]=1.0
              MAT[0][1]=0.0
              MAT[0][2]=0.0
              MAT[0][3]=0.0    #// 1 0 0 0 
              MAT[1][0]=0.0
              MAT[1][1]=1.0
              MAT[1][2]=0.0
              MAT[1][3]=0.0    #// 0 1 0 0
              MAT[2][0]=0.0
              MAT[2][1]=0.0
              MAT[2][2]=1.0
              MAT[2][3]=0.0   #// 0 0 1 0
              MAT[3][0]=0.0
              MAT[3][1]=0.0
              MAT[3][2]=0.0
              MAT[3][3]=1.0    #// 0 0 0 1    
              return MAT
              
          #平移變換矩陣函數---need
          def Translate3D(MAT,tx, ty, tz):
              tMAT=[[0.0 for i in range(4)] for i  in range(4)]
              tMAT[0][0]=1
              tMAT[0][1]=0
              tMAT[0][2]=0
              tMAT[0][3]=0	#//	1 0 0 tx
              
              tMAT[1][0]=0
              tMAT[1][1]=1
              tMAT[1][2]=0
              tMAT[1][3]=0	#//	0 1 0 ty
          	
              tMAT[2][0]=0
              tMAT[2][1]=0
              tMAT[2][2]=1
              tMAT[2][3]=0	#//	0 0 1 tz
              
              tMAT[3][0]=tx
              tMAT[3][1]=ty
              tMAT[3][2]=tz
              tMAT[3][3]=1;	#//	0 0 0 1
          
              return MATRIX_multiply(MAT,tMAT)#//相乘
          
          #比例(scale)變換矩陣函數---need
          def   Scale_3D( MAT, sx, sy, sz):
              tMAT=[[0.0 for i in range(4)] for i  in range(4)]
              tMAT[0][0]=sx
              tMAT[0][1]=0
              tMAT[0][2]=0
              tMAT[0][3]=0	#//	sx0 0 0 
              tMAT[1][0]=0
              tMAT[1][1]=sy
              tMAT[1][2]=0
              tMAT[1][3]=0	#//	0 sy0 0
              tMAT[2][0]=0
              tMAT[2][1]=0
              tMAT[2][2]=sz
              tMAT[2][3]=0    #//	0 0 sz0
              tMAT[3][0]=0
              tMAT[3][1]=0
              tMAT[3][2]=0
              tMAT[3][3]=1	#//	0 0 0 1
              return MATRIX_multiply(MAT,tMAT) #	//相乘
          
          #旋轉變換矩陣函數---need
          def  Rotate_3D( MAT, ax, ay, az):
              MAT1=[[0.0 for i in range(4)] for i  in range(4)]
              MAT2=[[0.0 for i in range(4)] for i  in range(4)]
              MATx=[[0.0 for i in range(4)] for i  in range(4)]
              MATy=[[0.0 for i in range(4)] for i  in range(4)]
              MATz=[[0.0 for i in range(4)] for i  in range(4)]
          
              ax=(3.1415926*ax)/180.0	#//角度轉換為弧度量
              ay=(3.1415926*ay)/180.0
              az=(3.1415926*az)/180.0
              
              #*****************************繞x軸旋轉********************************************
          
              MATx[0][0]=1
              MATx[0][1]=0
              MATx[0][2]=0
              MATx[0][3]=0    #//1  0		0	   0
              MATx[1][0]=0
              MATx[1][1]=cos(ax)
              MATx[1][2]=-sin(ax)
              MATx[1][3]=0    #//0  cos(ax)	-sin(ax)   0
              MATx[2][0]=0
              MATx[2][1]=sin(ax)
              MATx[2][2]=cos(ax)
              MATx[2][3]=0    #//0  sin(ax)	cos(ax)    0	
              MATx[3][0]=0
              MATx[3][1]=0
              MATx[3][2]=0
              MATx[3][3]=1    #//0  0		 0	   1
          
              #*****************************繞y軸旋轉********************************************
              MATy[0][0]=cos(ay)
              MATy[0][1]=0
              MATy[0][2]=sin(ay)
              MATy[0][3]=0    #//cos(ay)	0	sin(ay)		0
              MATy[1][0]=0
              MATy[1][1]=1
              MATy[1][2]=0
              MATy[1][3]=0    #//	0	1	0		0
              MATy[2][0]=-sin(ay)
              MATy[2][1]=0
              MATy[2][2]=cos(ay)
              MATy[2][3]=0    #//	-sin(ay)	0		cos(ay) 0
              MATy[3][0]=0
              MATy[3][1]=0
              MATy[3][2]=0
              MATy[3][3]=1    #// 0 	0	0		1
          
              #*****************************繞z軸旋轉********************************************
              MATz[0][0]=cos(az)
              MATz[0][1]=-sin(az)
              MATz[0][2]=0
              MATz[0][3]=0    #//cos(az)	-sin(az)	0		0
              MATz[1][0]=sin(az)
              MATz[1][1]=cos(az)
              MATz[1][2]=0
              MATz[1][3]=0    #//	sin(az)	cos(az)		0		0
              MATz[2][0]=0
              MATz[2][1]=0
              MATz[2][2]=1
              MATz[2][3]=0    #//	0	  0		1		0
              MATz[3][0]=0
              MATz[3][1]=0
              MATz[3][2]=0
              MATz[3][3]=1    #// 0 	  0		0		1
          
              MAT1=MATRIX_multiply(MAT,MATx)
              MAT2=MATRIX_multiply(MAT1,MATy)	
              return MATRIX_multiply(MAT2,MATz)	
          
          #透視投影(Perspective projection)---need
          def PerProject( Space,  XO,  YO):
              Screen=zuobiaostruct()
              if (Space.z==0):
                  Space.z=0.01		#//被除數不能為零
              Screen.x=(int)(FOCAL_DISTANCE*Space.x /(Space.z+FOCAL_DISTANCE)+XO)
              Screen.y=(int)(FOCAL_DISTANCE*Space.y /(Space.z+FOCAL_DISTANCE)+YO)
              return Screen
          
          #顯示3D的16x16字符---need
          def Show3D16x16Char(font,ax,ay,az,x,y,Z_Size,frontcolor,backcolor,model=1.5,fontmultiple=1.0):
          
              length = len(font)
              if length == 0:#字符數要大于一個
                  return 
              if length == 1: #只支持一個字符的顯示
                  text = font
              else:
                  text = font[0]
          
              m=0
              i=0
              k=0
              j=0
              XO=0
              YO=0
              
              gMAT=[[0.0 for i in range(4)]  for n in range(4)]
              Point0=zuobiaostruct()
              Point1=zuobiaostruct()
              PointDis=zuobiaostruct()
              
              gMAT=structure_3D()                        #//構建單位矩陣
              gMAT=Translate3D(gMAT,-8,-8,-8);         #//平移變換矩陣
              gMAT=Scale_3D(gMAT,fontmultiple,fontmultiple,fontmultiple);                #//比例變換矩陣
              gMAT=Rotate_3D(gMAT,ax,ay,az);            #//旋轉變換矩陣
              
              for m in range(length): #理論上就是將單個的字符延長為多個字符,最重要的就是坐標的確定和計算
                  text=font[m]
                  gb2312 = text.encode('gb2312')
                  hex_str = binascii.b2a_hex(gb2312)
                  result = str(hex_str,encoding = 'utf-8' )  #換算出漢字對應的字符地址
                  if eval('0x' + result[:2]) <128:
                      return
                  else:
                      area = eval('0x' + result[:2]) - 0xA0
                      index = eval('0x' + result[2:]) - 0xA0 #換算為16進制地址
                      offset = (94 * (area - 1)+ (index - 1))*32  #得出具體地址
                      font_rect = None
                      #注意這個文件HZK16,二進制文件需要單獨下載
                      with open("/home/xgj/Desktop/漢字時鐘/pyxgj/HZK16","rb") as f: #16x16字符集的地址,從中讀取出一個字符的點陣數據
                          f.seek(offset)
                          font_rect = f.read(32)#得到32個點陣數據
                      f.close()
              
                  for i in range(16):
                      for k in range(8):
                          temp = 0x01 << k
                          for j in range(2):
                              data=font_rect[i*2+j]  #取出數據
                              if data & temp == temp:
                                  Point0.x=16-(k+(1-j)*8)+m*16+m*2 #第m個字符的當前點的坐標
                                  
                                  #每個字符16個像素,第m個字符共m*16個像素,每兩個字符間的間距設為2,則m*16+m*2,前面的時實現當前點陣坐標的計算
                                  Point0.y=i    #(i*8)+k
                                  Point0.z=Z_Size        #//此參數能夠改變字符距離旋轉軸中心的距離
                                  
                                  Point1=vector_matrix_MULTIPLY(Point0,gMAT)#//矢量與矩陣相乘
                                  PointDis=PerProject(Point1,XO,YO)       #//映射投影
                                  Gui_Point(PointDis.x+x,PointDis.y+y,frontcolor)
                              else:
                                  if model ==1: #模式為1 時才會繪制底色
                                      Point0.x=16-(k+(1-j)*8)+m*16+m*2
                                      Point0.y=i #(i*8)+k
                                      Point0.z=Z_Size        #//此參數能夠改變字符距離旋轉軸中心的距離
                                      
                                      Point1=vector_matrix_MULTIPLY(Point0,gMAT)#//矢量與矩陣相乘
                                      PointDis=PerProject(Point1,XO,YO)       #//映射投影
                                      Gui_Point(PointDis.x+x,PointDis.y+y,backcolor)

          5.第5步:我增加了秒的相關定義和設置,在后續中補充秒的部分代碼。

          #---第5步---中文標簽定義-------------
          Week_zw=("一","二","三","四","五","六","日") #星期的中文
          Day_zw=("零","一","二","三","四","五","六","七","八","九","十") #可用于所有需要0-10的中文的地方
          Mouth_day=[31,28,31,30,31,30,31,31,30,31,30,31] #月份時長表
          #秒
          Second_add=['零','一', '二', '三', '四', '五', '六', '七', '八', '九', '十',
                      '十一', '十二', '十三', '十四', '十五', '十六', '十七', '十八', '十九',
                      '二十','二十一', '二十二', '二十三', '二十四', '二十五', '二十六', '二十七', '二十八', '二十九',
                      '三十','三十一', '三十二', '三十三', '三十四', '三十五', '三十六', '三十七', '三十八', '三十九', 
                      '四十','四十一', '四十二', '四十三', '四十四', '四十五', '四十六', '四十七', '四十八', '四十九', 
                      '五十', '五十一', '五十二', '五十三', '五十四', '五十五', '五十六', '五十七', '五十八', '五十九', 
                      ]

          6.第6步:這里有增加秒的代碼

          #---第6步---相關顯示函數定義---
          #顯示年
          def Show_Year(x0,y0,r,angel):
              timenow=time.localtime(time.time()) #獲取時間
              yearstr=Day_zw[(int)(timenow[0]/1000)]+Day_zw[int((timenow[0]%1000)/100)]+Day_zw[int((timenow[0]%100)/10)]+Day_zw[int((timenow[0]%10))]+"年"
              Show3D16x16Char(yearstr,0,0,angel-90,x0,y0,1,WHITE,BackColor,0,fontmultiple)
          
          #顯示周(星期)
          def Show_Week(x0,y0,r,agl):
              timenow=time.localtime(time.time()) #獲取時間
              for i in range(7):
                  angel=360/7
                  if i < timenow[6]:
                      angel=agl-angel*(timenow[6]-i)
                      ForeColor=RED
                  elif i >timenow[6]:
                      angel=agl+angel*(i-timenow[6])
                      ForeColor=RED
                  else :
                      angel=agl  #當前周設為90度,即在水平方向上
                      ForeColor=WHITE
                  x1=x0 + r * math.sin(angel * 3.14/180) #由角度計算出當前應在的坐標點
                  y1=y0 + r * math.cos(angel * 3.14/180)
                  Show3D16x16Char("周"+Week_zw[i],0,0,angel-90,(int)(x1),(int)(y1),1,ForeColor,BackColor,0,fontmultiple)#輸出旋轉后的字符串
          
          #顯示月份
          def Show_Month(x0,y0,r,agl):
              timenow=time.localtime(time.time())#獲取時間
              for i in range(1,13): #一年12個月
                  angel=360/12
                  if i < timenow[1]:
                      angel=agl-angel*(timenow[1]-i) #其他月份相應得到角度推算
                      ForeColor=GREEN
                  elif i >timenow[1]:
                      angel=agl+angel*(i-timenow[1])
                      ForeColor=GREEN
                  else :
                      angel=agl  #當前月份設為90度,即在水平方向上
                      ForeColor=WHITE
                  x1=x0 + r * math.sin(angel * 3.14/180) #由角度計算出當前應在的坐標點
                  y1=y0 + r * math.cos(angel * 3.14/180)
                  if i>10:
                      monthstr=Day_zw[10]+Day_zw[i%10]+"月"  #得出要顯示的字符串
                  else:
                      monthstr = Day_zw[i]+"月"
                  Show3D16x16Char(monthstr,0,0,angel-90,(int)(x1),(int)(y1),1,ForeColor,BackColor,0,fontmultiple)#顯示字符串
          
          #顯示日期
          def Show_Day(x0,y0,r,agl):
              timenow=time.localtime(time.time()) #獲取時間
              if (timenow[0]%4==0 and timenow[0]%100 !=0) or (timenow[0]%400 == 0):
                  Mouth_day[1]=29 #閏年,補全二月的時長表
              else:
                  Mouth_day[1]=28
                  #Mouth_day 為月份的時長表
              for i in range(1,Mouth_day[timenow[1]-1]+1):
                  angel=360/Mouth_day[timenow[1]-1]
                  if i < timenow[2]:
                      angel=agl-angel*(timenow[2]-i)#其他日期相應得到角度推算
                      ForeColor=RED
                  elif i >timenow[2]:
                      angel=agl+angel*(i-timenow[2])
                      ForeColor=RED
                  else :
                      angel=agl  #當前日期設為90度,即在水平方向上
                      ForeColor=WHITE
                  x1=x0 + r * math.sin(angel * 3.14/180)#由角度計算出當前應在的坐標點
                  y1=y0 + r * math.cos(angel * 3.14/180)
                  if i>20:
                      if i%10 !=0:
                          daystr= Day_zw[(int)(i/10) ]+ Day_zw[10] +Day_zw[i%10]+"日"#得出要顯示的字符串
                      else:
                          daystr= Day_zw[(int)(i/10) ]+ Day_zw[10]+"日"
                  elif i>10:
                      daystr= Day_zw[10]+Day_zw[i%10]+"日"
                  else:
                      daystr=Day_zw[i]+"日"
                  Show3D16x16Char(daystr,0,0,angel-90,(int)(x1),(int)(y1),1,ForeColor,BackColor,0,fontmultiple)#顯示字符串
                  
          #顯示時=小時=h
          def Show_Hour(x0,y0,r,agl):
              timenow=time.localtime(time.time())#獲取時間
              for i in range(0,24):
                  angel=360/24
                  if i < timenow[3]:
                      angel=agl-angel*(timenow[3]-i)#其他時間相應得到角度推算
                      ForeColor=GREEN
                  elif i >timenow[3]:
                      angel=agl+angel*(i-timenow[3])
                      ForeColor=GREEN
                  else :
                      angel=agl  #當前時間設為90度,即在水平方向上
                      ForeColor=WHITE
                  x1=x0 + r * math.sin(angel * 3.14/180)
                  y1=y0 + r * math.cos(angel * 3.14/180)
                  if i>20:
                      if i%10 !=0:
                          daystr= Day_zw[(int)(i/10) ]+ Day_zw[10] +Day_zw[i%10]+"時"  #得到要顯示的字符串
                      else:
                          daystr= Day_zw[(int)(i/10) ]+ Day_zw[10]+"時"
                  elif i>10:
                      daystr= Day_zw[10]+Day_zw[i%10]+"時"
                  else:
                      daystr=Day_zw[i]+"時"
                  Show3D16x16Char(daystr,0,0,angel-90,(int)(x1),(int)(y1),1,ForeColor,BackColor,0,fontmultiple) #顯示角度計算后的字符串
          
          # 顯示分=分鐘=m   
          def Show_Min(x0,y0,r,agl):
              timenow=time.localtime(time.time())
              for i in range(0,60):
                  angel = 360/60
                  if i < timenow[4]:
                      #將秒數也代入角度計算中就可以得到更精確的角度偏移,而且每秒鐘都會移動,好看
                      angel=agl-angel*(timenow[4]-i)-(360/60/60 * timenow[5] ) 
                      ForeColor=RED
                  elif i > timenow[4]:
                      angel = agl + angel * (i-timenow[4]) - (360/60/60 * timenow[5] )
                      ForeColor = RED
                  else :
                      angel = agl - (360/60/60 * timenow[5] )  #當前日期設為90度-秒鐘的角度,實現動態顯示
                      ForeColor = WHITE
                  x1 = x0 + r * math.sin(angel * 3.14/180) #由角度計算出當前應在的坐標點
                  y1 = y0 + r * math.cos(angel * 3.14/180)
                  if i>=20:
                      if i%10 !=0:
                          daystr = Day_zw[(int)(i/10) ]+ Day_zw[10] +Day_zw[i%10]+"分" #得到要顯示的字符串
                      else:
                          daystr = Day_zw[(int)(i/10) ]+ Day_zw[10]+"分"
                  elif i>10:
                      daystr = Day_zw[10]+Day_zw[i%10]+"分"
                  else:
                      daystr = Day_zw[i]+"分"
                  Show3D16x16Char(daystr,0,0,angel-90,(int)(x1),(int)(y1),1,ForeColor,BackColor,0,fontmultiple)#顯示角度計算后的字符串
          
          # 顯示秒=秒針=s   
          def Show_Sec(x0,y0,r,agl):
              #獲取時間列表
              timenow=time.localtime(time.time())
              #print(timenow)
              #time.struct_time(tm_year=2020, tm_mon=3, tm_mday=28, tm_hour=9, tm_min=24, tm_sec=18)
              for i in range(0,60):
                  angel = 360/60
                  if i < timenow[5]:
                      #有一個bug,如何實現跳一秒走一格,整體轉一圈優雅些,暫時不會。
                      angel=agl-angel*(timenow[5]-i)-(360/60 * timenow[5]) 
                      ForeColor=GREEN
                  elif i > timenow[5]:
                      angel = agl + angel * (i-timenow[5])-(360/60 * timenow[5]) 
                      ForeColor = GREEN
          
                  else :
                      #當前日期設為90度-秒鐘的角度,實現動態顯示
                      angel = agl-(360/60 * timenow[5] ) 
                      #歸零=o時顯示紅色
                      if angel ==90:
                          ForeColor = RED
                      #當前時間為白色
                      else:
                          ForeColor = WHITE
                  #根據秒表動態轉圈
                  x1 = x0 + r * math.sin(angel * 3.14/180) #由角度計算出當前應在的坐標點
                  y1 = y0 + r * math.cos(angel * 3.14/180)
                  if i>=20:
                      if i%10 !=0:
                          #加入秒的字符串
                          daystr = Second_add[(int)(i/10) ]+ Second_add[10] +Second_add[i%10]+"秒" #得到要顯示的字符串
                      else:
                          daystr = Second_add[(int)(i/10) ]+ Second_add[10]+"秒"
                  elif i>10:
                      daystr = Second_add[10]+Second_add[i%10]+"秒"
                  else:
                      daystr = Second_add[i]+"秒"
                  #顯示秒的字符串一圈
                  Show3D16x16Char(daystr,0,0,angel-90,(int)(x1),(int)(y1),1,ForeColor,BackColor,0,fontmultiple)#顯示角度計算后的字符串
          

          7.第7步:我增加了打印當前時間的打印文字函數

          #---第7步---定義打印屏幕文字函數---
          def print_text(font, x, y, text, color=WHITE):
              imgText = font.render(text, True, WHITE)
              screen.blit(imgText, (int(float(x)),int(float(y))))

          8.第8步:

          #---第8步---游戲循環---
          i=0
          while True:
              #獲取今天的時間
              timenow=time.localtime(time.time())
              #定義年月日
              years=timenow[0]
              months=timenow[1]
              days=timenow[2]
              #定義時分秒
              #hours = today.hour % 12 #顯示12h制
              hours = timenow[3] % 24 #顯示24h制
              minutes = timenow[4]
              seconds = timenow[5]
              #顯示當前時間,x=400,y=550,為坐標
              print_text(font, 500, 150, '當前時間:'+str(years) +'年'+str(months) +'月'+str(days) 
              +'日'+str(hours) +'時'+ ":" + str(minutes) + '分'+":" + str(seconds)+'秒') 
          
              #退出設置
              for event in pygame.event.get():
                  if event.type in (QUIT,KEYDOWN):
                      pygame.quit()
                      sys.exit()   
              i+=1
          
              #當i<90啟動時整體圓盤都要轉動,當≥90時停止
              if i > 90:
                  i=90
              
              #圓盤設置
              #坐標點,水平向右坐標定固定顯示白色當前時間;
              Show_Year(SCREEN_X_MAX/2-40*fontmultiple,SCREEN_Y_MAX/2,32,90) #顯示年
              Show_Week(SCREEN_X_MAX/2,SCREEN_Y_MAX/2,65*fontmultiple,180-i) #顯示周
              Show_Month(SCREEN_X_MAX/2,SCREEN_Y_MAX/2,110*fontmultiple,i)    #顯示月份
              Show_Day(SCREEN_X_MAX/2,SCREEN_Y_MAX/2,170*fontmultiple,180-i)  #顯示日期
              Show_Hour(SCREEN_X_MAX/2,SCREEN_Y_MAX/2,245*fontmultiple,i)     #顯示時
              Show_Min(SCREEN_X_MAX/2,SCREEN_Y_MAX/2,325*fontmultiple,180-i)  #顯示分
              Show_Sec(SCREEN_X_MAX/2,SCREEN_Y_MAX/2,425*fontmultiple,180-i)  #顯示秒
              
              #線圈的設置
              pygame.draw.circle(screen,ForeColor,((int)(SCREEN_X_MAX/2),(int)(SCREEN_Y_MAX/2)),int(55*fontmultiple),1) #顯示幾個圓
              pygame.draw.circle(screen,ForeColor,((int)(SCREEN_X_MAX/2),(int)(SCREEN_Y_MAX/2)),int(100*fontmultiple),1)
              pygame.draw.circle(screen,ForeColor,((int)(SCREEN_X_MAX/2),(int)(SCREEN_Y_MAX/2)),int(160*fontmultiple),1)
              pygame.draw.circle(screen,ForeColor,((int)(SCREEN_X_MAX/2),(int)(SCREEN_Y_MAX/2)),int(235*fontmultiple),1)
              pygame.draw.circle(screen,ForeColor,((int)(SCREEN_X_MAX/2),(int)(SCREEN_Y_MAX/2)),int(315*fontmultiple),1)
              pygame.draw.circle(screen,ForeColor,((int)(SCREEN_X_MAX/2),(int)(SCREEN_Y_MAX/2)),int(415*fontmultiple),1)
              
              pygame.display.update()
              screen.fill(0)  #屏幕清零


          四、結束語:

          據說python無所不能,可惜我也是新手小白,我也是站在巨人和大神的肩膀上的,感謝大神執念執戰(王成程)。最重要的是python為什么這么火?第1是代碼簡潔;第2是代碼及庫很多,都是開源的、免費的,都是大神們之間互相免費提供的,在此多謝他們。

          喜歡python的人,不管多大年紀、不管男女,看我的python,你學起來簡單有趣,我都是親測過的。


          主站蜘蛛池模板: 久久久99精品一区二区| 免费一区二区无码视频在线播放 | 无码av中文一区二区三区桃花岛| 国产激情无码一区二区三区| 久久国产精品免费一区二区三区| 一本色道久久综合一区| 久久精品一区二区国产| 国产精品一区二区久久精品| 国产中的精品一区的| 久久久久国产一区二区| 3d动漫精品一区视频在线观看 | 中文字幕av日韩精品一区二区| 2021国产精品一区二区在线| 韩国精品一区二区三区无码视频| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 一区二区三区人妻无码| 亚洲日本va午夜中文字幕一区| 美女视频一区三区网站在线观看| 国内精品视频一区二区三区八戒| 一区二区不卡视频在线观看| 无码人妻久久一区二区三区 | 国产精品视频无圣光一区| 国产精品亚洲不卡一区二区三区| 无码欧精品亚洲日韩一区| 人妻av综合天堂一区| 东京热无码av一区二区| 在线观看一区二区三区av| 亚洲AV无码一区二区三区在线观看 | 日韩精品国产一区| 精品国产亚洲一区二区在线观看 | 国产一区二区三区国产精品| 亚洲色欲一区二区三区在线观看| 国产香蕉一区二区在线网站| 亚洲国产精品第一区二区三区| 人妻aⅴ无码一区二区三区| 精品91一区二区三区| 激情内射亚洲一区二区三区 | 中文字幕一区二区三区精华液 | 日本高清天码一区在线播放| 无码人妻精品一区二区三区在线 | 日韩电影在线观看第一区|