python获取本地时间/日期格式化
获取当前时间:
Python代码
import time print time.time() #获取当前时间 print time.strftime("%Y-%m-%d %X ") #获取当前时间(按照指定格式)
用time.localtime()方法,作用是格式化时间戳为本地的时间:
Python代码
import time print time.localtime(time.time())
输出结果:time.struct_time(tm_year=2015, tm_mon=11, tm_mday=513, tm_hour=15, tm_min=48, tm_sec=28, tm_wday=3, tm_yday=309, tm_isdst=0)
现在看起来更有希望格式成我们想要的时间了。
time.strftime('%Y-%m-%d',time.localtime(time.time()))
Python代码
import time print time.strftime('%Y-%m-%d',time.localtime(time.time()))
最后用time.strftime()方法,把刚才的一大串信息格式化成我们想要的东西,现在的结果是:2015-11-05
ime.strftime里面有很多参数,可以让你能够更随意的输出自己想要的东西:
下面是time.strftime的参数:
strftime(format[, tuple]) -> string
将指定的struct_time(默认为当前时间),根据指定的格式化字符串输出
1,python中时间日期格式化符号:
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身
2. 计算时间差:
Python代码
#coding=utf-8 import time import datetime d1 = datetime.datetime(2013,6,9) d2 = datetime.datetime(2015, 11,5) print (d1 - d2).days
输出结果是:879
3.计算运行时间差:
Python代码
#coding=utf-8 <pre class="brush:php;toolbar:false"> import time import datetime starttime = datetime.datetime.now() time.sleep(3) endtime = datetime.datetime.now() print (endtime - starttime).seconds <strong> </strong>
输出结果是:3
4,计算十天后的日期时间:
Python代码
#coding=utf-8 import time import datetime d1 = datetime.datetime.now() d3 = d1 + datetime.timedelta(days =10) print str(d3) print d3.ctime()<strong> </strong>
输出结果:
2015-11-15 14:44:04.291000
Sun Nov 15 14:44:04 2015
5,阳历转阴历
#! -*- encoding: GBK -*- import re import math import time import os MONTH_NAME = ["", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"] MONTH_DAYS = [0,31,28,31,30,31,30,31,31,30,31,30,31]; LUNAR_CALENDAR_TABLE = [ 0x04AE53,0x0A5748,0x5526BD,0x0D2650,0x0D9544,0x46AAB9,0x056A4D,0x09AD42,0x24AEB6,0x04AE4A, # //*1901-1910*/ 0x6A4DBE,0x0A4D52,0x0D2546,0x5D52BA,0x0B544E,0x0D6A43,0x296D37,0x095B4B,0x749BC1,0x049754, # //*1911-1920*/ 0x0A4B48,0x5B25BC,0x06A550,0x06D445,0x4ADAB8,0x02B64D,0x095742,0x2497B7,0x04974A,0x664B3E, # //*1921-1930*/ 0x0D4A51,0x0EA546,0x56D4BA,0x05AD4E,0x02B644,0x393738,0x092E4B,0x7C96BF,0x0C9553,0x0D4A48, # //*1931-1940*/ 0x6DA53B,0x0B554F,0x056A45,0x4AADB9,0x025D4D,0x092D42,0x2C95B6,0x0A954A,0x7B4ABD,0x06CA51, # //*1941-1950*/ 0x0B5546,0x555ABB,0x04DA4E,0x0A5B43,0x352BB8,0x052B4C,0x8A953F,0x0E9552,0x06AA48,0x6AD53C, # //*1951-1960*/ 0x0AB54F,0x04B645,0x4A5739,0x0A574D,0x052642,0x3E9335,0x0D9549,0x75AABE,0x056A51,0x096D46, # //*1961-1970*/ 0x54AEBB,0x04AD4F,0x0A4D43,0x4D26B7,0x0D254B,0x8D52BF,0x0B5452,0x0B6A47,0x696D3C,0x095B50, # //*1971-1980*/ 0x049B45,0x4A4BB9,0x0A4B4D,0xAB25C2,0x06A554,0x06D449,0x6ADA3D,0x0AB651,0x093746,0x5497BB, # //*1981-1990*/ 0x04974F,0x064B44,0x36A537,0x0EA54A,0x86B2BF,0x05AC53,0x0AB647,0x5936BC,0x092E50,0x0C9645, # //*1991-2000*/ 0x4D4AB8,0x0D4A4C,0x0DA541,0x25AAB6,0x056A49,0x7AADBD,0x025D52,0x092D47,0x5C95BA,0x0A954E, # //*2001-2010*/ 0x0B4A43,0x4B5537,0x0AD54A,0x955ABF,0x04BA53,0x0A5B48,0x652BBC,0x052B50,0x0A9345,0x474AB9, # //*2011-2020*/ 0x06AA4C,0x0AD541,0x24DAB6,0x04B64A,0x69573D,0x0A4E51,0x0D2646,0x5E933A,0x0D534D,0x05AA43, # //*2021-2030*/ 0x36B537,0x096D4B,0xB4AEBF,0x04AD53,0x0A4D48,0x6D25BC,0x0D254F,0x0D5244,0x5DAA38,0x0B5A4C, # //*2031-2040*/ 0x056D41,0x24ADB6,0x049B4A,0x7A4BBE,0x0A4B51,0x0AA546,0x5B52BA,0x06D24E,0x0ADA42,0x355B37, # //*2041-2050*/ 0x09374B,0x8497C1,0x049753,0x064B48,0x66A53C,0x0EA54F,0x06B244,0x4AB638,0x0AAE4C,0x092E42, # //*2051-2060*/ 0x3C9735,0x0C9649,0x7D4ABD,0x0D4A51,0x0DA545,0x55AABA,0x056A4E,0x0A6D43,0x452EB7,0x052D4B, # //*2061-2070*/ 0x8A95BF,0x0A9553,0x0B4A47,0x6B553B,0x0AD54F,0x055A45,0x4A5D38,0x0A5B4C,0x052B42,0x3A93B6, # //*2071-2080*/ 0x069349,0x7729BD,0x06AA51,0x0AD546,0x54DABA,0x04B64E,0x0A5743,0x452738,0x0D264A,0x8E933E, # //*2081-2090*/ 0x0D5252,0x0DAA47,0x66B53B,0x056D4F,0x04AE45,0x4A4EB9,0x0A4D4C,0x0D1541,0x2D92B5 # //*2091-2099*/ ] # 下面的三个表格是农历数据表 LunarCalendarTable 的结构。总共使用了32位整数的0~23位。 # # 6 5 4 3 2 1 0 # 表示春节的公历月份 表示春节的公历日期 # # 19 18 17 16 15 14 13 12 11 10 9 8 7 # 1 2 3 4 5 6 7 8 9 10 11 12 13 # 农历1-13 月大小 。月份对应位为1,农历月大(30 天),为0 表示小(29 天) # # 23 22 21 20 # 表示当年闰月月份,值为0 为则表示当年无闰月。 def get_month_days(year, month): global MONTH_DAYS; if(month==2): if(((year%4 == 0) and (year%100 != 0)) or (year%400 == 0)): return 29 else: return 28 else: return(MONTH_DAYS[month]); def get_syear_days(syear): if(((syear%4 == 0) and (syear%100 != 0)) or (syear%400 == 0)): return 366 else: return 365 def get_days_of_syear(syear, smonth, sday): """ get given day's number of sun year """ days = 0 for i in range(1, smonth): days += get_month_days(syear, i) days += sday return days def get_days_of_lyear(syear, smonth, sday): """ get given day's number of the lunar year """ global LUNAR_CALENDAR_TABLE lyear = syear spring_month = (LUNAR_CALENDAR_TABLE[syear-1901] & 0x60) >> 5 spring_day = (LUNAR_CALENDAR_TABLE[syear-1901] & 0x1F) if ((spring_month > smonth) or ((spring_month == smonth) and (spring_day > sday))): # the day is before spring festival day, and is previous day in lunar year spring_month = (LUNAR_CALENDAR_TABLE[syear-1901 - 1] & 0x60) >> 5 spring_day = (LUNAR_CALENDAR_TABLE[syear-1901 - 1] & 0x1F) lyear -= 1 lunar_days = get_syear_days(lyear) + get_days_of_syear(syear, smonth, sday) \ - get_days_of_syear(lyear, spring_month, spring_day) else: lunar_days = get_days_of_syear(syear, smonth, sday) \ - get_days_of_syear(syear, spring_month, spring_day) lunar_days += 1 # consider current day return (lyear, lunar_days) def get_lunar_date(syear, smonth, sday): if syear < 1901 or syear > 2099: return # lunar year, lunar days to spring festival lyear, lunar_days = get_days_of_lyear(syear, smonth, sday); l_double_month = (LUNAR_CALENDAR_TABLE[lyear-1901] >> 20 ) & 0xF lmonth = lday = 1 bits = 19 month_begin_day = 0 for lmonth in range(1, 14): l_month_big = (LUNAR_CALENDAR_TABLE[lyear-1901] >> bits) & 0x1 if month_begin_day + 29 + l_month_big < lunar_days: lmonth += 1 month_begin_day += 29 + l_month_big else: lday = lunar_days - month_begin_day break bits -= 1 if l_double_month: # lunar double month adjust if l_double_month == lmonth - 1: lmonth -= 1 lmonth += 100 # double month elif l_double_month < lmonth - 1: lmonth -= 1 return (lyear, lmonth, lday) if __name__ == "__main__": y,m,d = 2010, 9, 28 print "Sun calendar 2010-9-28 == Lunar calendar ", get_lunar_date(y,m,d)
输出结果:
Sun calendar 2010-9-28 == Lunar calendar (2010, 8, 21)
Python版的农历日历Calendar:
#coding=utf-8 #参见:http://download.csdn.net/source/1178 #****************************************************************************** # 下面为阴历计算所需的数据,为节省存储空间,所以采用下面比较变态的存储方法. #****************************************************************************** #数组g_lunar_month_day存入阴历1901年到2050年每年中的月天数信息, #阴历每月只能是29或30天,一年用12(或13)个二进制位表示,对应位为1表30天,否则为29天 g_lunar_month_day = [ 0x4ae0, 0xa570, 0x5268, 0xd260, 0xd950, 0x6aa8, 0x56a0, 0x9ad0, 0x4ae8, 0x4ae0, #1910 0xa4d8, 0xa4d0, 0xd250, 0xd548, 0xb550, 0x56a0, 0x96d0, 0x95b0, 0x49b8, 0x49b0, #1920 0xa4b0, 0xb258, 0x6a50, 0x6d40, 0xada8, 0x2b60, 0x9570, 0x4978, 0x4970, 0x64b0, #1930 0xd4a0, 0xea50, 0x6d48, 0x5ad0, 0x2b60, 0x9370, 0x92e0, 0xc968, 0xc950, 0xd4a0, #1940 0xda50, 0xb550, 0x56a0, 0xaad8, 0x25d0, 0x92d0, 0xc958, 0xa950, 0xb4a8, 0x6ca0, #1950 0xb550, 0x55a8, 0x4da0, 0xa5b0, 0x52b8, 0x52b0, 0xa950, 0xe950, 0x6aa0, 0xad50, #1960 0xab50, 0x4b60, 0xa570, 0xa570, 0x5260, 0xe930, 0xd950, 0x5aa8, 0x56a0, 0x96d0, #1970 0x4ae8, 0x4ad0, 0xa4d0, 0xd268, 0xd250, 0xd528, 0xb540, 0xb6a0, 0x96d0, 0x95b0, #1980 0x49b0, 0xa4b8, 0xa4b0, 0xb258, 0x6a50, 0x6d40, 0xada0, 0xab60, 0x9370, 0x4978, #1990 0x4970, 0x64b0, 0x6a50, 0xea50, 0x6b28, 0x5ac0, 0xab60, 0x9368, 0x92e0, 0xc960, #2000 0xd4a8, 0xd4a0, 0xda50, 0x5aa8, 0x56a0, 0xaad8, 0x25d0, 0x92d0, 0xc958, 0xa950, #2010 0xb4a0, 0xb550, 0xb550, 0x55a8, 0x4ba0, 0xa5b0, 0x52b8, 0x52b0, 0xa930, 0x74a8, #2020 0x6aa0, 0xad50, 0x4da8, 0x4b60, 0x9570, 0xa4e0, 0xd260, 0xe930, 0xd530, 0x5aa0, #2030 0x6b50, 0x96d0, 0x4ae8, 0x4ad0, 0xa4d0, 0xd258, 0xd250, 0xd520, 0xdaa0, 0xb5a0, #2040 0x56d0, 0x4ad8, 0x49b0, 0xa4b8, 0xa4b0, 0xaa50, 0xb528, 0x6d20, 0xada0, 0x55b0, #2050 ] #数组gLanarMonth存放阴历1901年到2050年闰月的月份,如没有则为0,每字节存两年 g_lunar_month = [ 0x00, 0x50, 0x04, 0x00, 0x20, #1910 0x60, 0x05, 0x00, 0x20, 0x70, #1920 0x05, 0x00, 0x40, 0x02, 0x06, #1930 0x00, 0x50, 0x03, 0x07, 0x00, #1940 0x60, 0x04, 0x00, 0x20, 0x70, #1950 0x05, 0x00, 0x30, 0x80, 0x06, #1960 0x00, 0x40, 0x03, 0x07, 0x00, #1970 0x50, 0x04, 0x08, 0x00, 0x60, #1980 0x04, 0x0a, 0x00, 0x60, 0x05, #1990 0x00, 0x30, 0x80, 0x05, 0x00, #2000 0x40, 0x02, 0x07, 0x00, 0x50, #2010 0x04, 0x09, 0x00, 0x60, 0x04, #2020 0x00, 0x20, 0x60, 0x05, 0x00, #2030 0x30, 0xb0, 0x06, 0x00, 0x50, #2040 0x02, 0x07, 0x00, 0x50, 0x03 #2050 ] #================================================================================== from datetime import date, datetime from calendar import Calendar as Cal START_YEAR = 1901 def is_leap_year(tm): y = tm.year return (not (y % 4)) and (y % 100) or (not (y % 400)) def show_month(tm): (ly, lm, ld) = get_ludar_date(tm) print print u"%d年%d月%d日" % (tm.year, tm.month, tm.day), week_str(tm), print u"\t农历:", y_lunar(ly), m_lunar(lm), d_lunar(ld) print print u"日\t一\t二\t三\t四\t五\t六" c = Cal() ds = [d for d in c.itermonthdays(tm.year, tm.month)] count = 0 for d in ds: count += 1 if d == 0: print "\t", continue (ly, lm, ld) = get_ludar_date(datetime(tm.year, tm.month, d)) if count % 7 == 0: print d_str = str(d) if d == tm.day: d_str = u"*" + d_str print d_str + d_lunar(ld) + u"\t", print def this_month(): show_month(datetime.now()) def week_str(tm): a = u'星期一 星期二 星期三 星期四 星期五 星期六 星期日'.split() return a[tm.weekday()] def d_lunar(ld): a = u'初一 初二 初三 初四 初五 初六 初七 初八 初九 初十 十一 十二 十三 十四 十五 十六 十七 十八 十九 廿十 廿一 廿二 廿三 廿四 廿五 廿六 廿七 廿八 廿九 三十'.split() return a[ld - 1] def m_lunar(lm): a = u'正月 二月 三月 四月 五月 六月 七月 八月 九月 十月 十一月 十二月'.split() return a[lm - 1] def y_lunar(ly): y = ly tg = u'甲 乙 丙 丁 戊 己 庚 辛 壬 癸'.split() dz = u'子 丑 寅 卯 辰 巳 午 未 申 酉 戌 亥'.split() sx = u'鼠 牛 虎 免 龙 蛇 马 羊 猴 鸡 狗 猪'.split() return tg[(y - 4) % 10] + dz[(y - 4) % 12] + u' ' + sx[(y - 4) % 12] + u'年' def date_diff(tm): return (tm - datetime(1901, 1, 1)).days def get_leap_month(lunar_year): flag = g_lunar_month[(lunar_year - START_YEAR) / 2] if (lunar_year - START_YEAR) % 2: return flag & 0x0f else: return flag >> 4 def lunar_month_days(lunar_year, lunar_month): if (lunar_year < START_YEAR): return 30 high, low = 0, 29 iBit = 16 - lunar_month; if (lunar_month > get_leap_month(lunar_year) and get_leap_month(lunar_year)): iBit -= 1 if (g_lunar_month_day[lunar_year - START_YEAR] & (1 << iBit)): low += 1 if (lunar_month == get_leap_month(lunar_year)): if (g_lunar_month_day[lunar_year - START_YEAR] & (1 << (iBit -1))): high = 30 else: high = 29 return (high, low) def lunar_year_days(year): days = 0 for i in range(1, 13): (high, low) = lunar_month_days(year, i) days += high days += low return days def get_ludar_date(tm): span_days = date_diff(tm) #阳历1901年2月19日为阴历1901年正月初一 #阳历1901年1月1日到2月19日共有49天 if (span_days <49): year = START_YEAR - 1 if (span_days <19): month = 11; day = 11 + span_days else: month = 12; day = span_days - 18 return (year, month, day) #下面从阴历1901年正月初一算起 span_days -= 49 year, month, day = START_YEAR, 1, 1 #计算年 tmp = lunar_year_days(year) while span_days >= tmp: span_days -= tmp year += 1 tmp = lunar_year_days(year) #计算月 (foo, tmp) = lunar_month_days(year, month) while span_days >= tmp: span_days -= tmp if (month == get_leap_month(year)): (tmp, foo) = lunar_month_days(year, month) if (span_days < tmp): return (0, 0, 0) span_days -= tmp month += 1 (foo, tmp) = lunar_month_days(year, month) #计算日 day += span_days return (year, month, day) #功能简单,只打印当月的 this_month()
输出结果:
2015年11月5日 星期四 农历: 乙未 羊年 九月 廿四
日一二三四 五六
1廿十2廿一 3廿二4廿三 *5廿四6廿五 7廿六
8廿七9廿八 10廿九11三十 12初一13初二 14初三
15初四16初五 17初六18初七 19初八20初九 21初十
22十一23十二 24十三25十四 26十五27十六 28十七
29十八30十九
计算年龄:
from time import * #a function to find your age def age(): print "Enter Your Date of Birth" d=input("Day:") m=input("Month:") y=input("Year:") #get the current time in tuple format a=gmtime() #difference in day dd=a[2]-d #difference in month dm=a[1]-m #difference in year dy=a[0]-y #checks if difference in day is negative if dd<0: dd=dd+30 dm=dm-1 #checks if difference in month is negative when difference in day is also negative if dm<0: dm=dm+12 dy=dy-1 #checks if difference in month is negative when difference in day is positive if dm<0: dm=dm+12 dy=dy-1 print "Your current age is %s Years %s Months & %s Days"%(dy,dm,dd) age()

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Permohonan yang menukarkan XML terus ke PDF tidak dapat dijumpai kerana mereka adalah dua format yang berbeza. XML digunakan untuk menyimpan data, manakala PDF digunakan untuk memaparkan dokumen. Untuk melengkapkan transformasi, anda boleh menggunakan bahasa pengaturcaraan dan perpustakaan seperti Python dan ReportLab untuk menghuraikan data XML dan menghasilkan dokumen PDF.

Gunakan kebanyakan editor teks untuk membuka fail XML; Jika anda memerlukan paparan pokok yang lebih intuitif, anda boleh menggunakan editor XML, seperti editor XML oksigen atau XMLSPY; Jika anda memproses data XML dalam program, anda perlu menggunakan bahasa pengaturcaraan (seperti Python) dan perpustakaan XML (seperti XML.Etree.ElementTree) untuk menghuraikan.

Alat pemformatan XML boleh menaip kod mengikut peraturan untuk meningkatkan kebolehbacaan dan pemahaman. Apabila memilih alat, perhatikan keupayaan penyesuaian, pengendalian keadaan khas, prestasi dan kemudahan penggunaan. Jenis alat yang biasa digunakan termasuk alat dalam talian, pemalam IDE, dan alat baris arahan.

Tidak ada XML percuma yang mudah dan langsung ke alat PDF di mudah alih. Proses visualisasi data yang diperlukan melibatkan pemahaman dan rendering data yang kompleks, dan kebanyakan alat yang dipanggil "percuma" di pasaran mempunyai pengalaman yang buruk. Adalah disyorkan untuk menggunakan alat sampingan komputer atau menggunakan perkhidmatan awan, atau membangunkan aplikasi sendiri untuk mendapatkan kesan penukaran yang lebih dipercayai.

Untuk fail XML kecil, anda boleh menggantikan kandungan anotasi secara langsung dengan editor teks; Untuk fail besar, adalah disyorkan untuk menggunakan parser XML untuk mengubahnya untuk memastikan kecekapan dan ketepatan. Berhati -hati apabila memadam komen XML, menyimpan komen biasanya membantu pemahaman dan penyelenggaraan kod. Petua Lanjutan menyediakan kod sampel Python untuk mengubahsuai komen menggunakan parser XML, tetapi pelaksanaan khusus perlu diselaraskan mengikut perpustakaan XML yang digunakan. Beri perhatian kepada isu pengekodan semasa mengubah suai fail XML. Adalah disyorkan untuk menggunakan pengekodan UTF-8 dan menentukan format pengekodan.

Mengubah kandungan XML memerlukan pengaturcaraan, kerana ia memerlukan penemuan tepat nod sasaran untuk menambah, memadam, mengubah suai dan menyemak. Bahasa pengaturcaraan mempunyai perpustakaan yang sepadan untuk memproses XML dan menyediakan API untuk melaksanakan operasi yang selamat, cekap dan terkawal seperti pangkalan data operasi.

Kelajuan XML mudah alih ke PDF bergantung kepada faktor -faktor berikut: kerumitan struktur XML. Kaedah Penukaran Konfigurasi Perkakasan Mudah Alih (Perpustakaan, Algoritma) Kaedah Pengoptimuman Kualiti Kod (Pilih perpustakaan yang cekap, mengoptimumkan algoritma, data cache, dan menggunakan pelbagai threading). Secara keseluruhannya, tidak ada jawapan mutlak dan ia perlu dioptimumkan mengikut keadaan tertentu.

Untuk menjana imej melalui XML, anda perlu menggunakan perpustakaan graf (seperti bantal dan JFreechart) sebagai jambatan untuk menjana imej berdasarkan metadata (saiz, warna) dalam XML. Kunci untuk mengawal saiz imej adalah untuk menyesuaikan nilai & lt; lebar & gt; dan & lt; ketinggian & gt; Tag dalam XML. Walau bagaimanapun, dalam aplikasi praktikal, kerumitan struktur XML, kehalusan lukisan graf, kelajuan penjanaan imej dan penggunaan memori, dan pemilihan format imej semuanya mempunyai kesan ke atas saiz imej yang dihasilkan. Oleh itu, perlu mempunyai pemahaman yang mendalam tentang struktur XML, mahir dalam perpustakaan grafik, dan mempertimbangkan faktor -faktor seperti algoritma pengoptimuman dan pemilihan format imej.
