当前位置: 首页>编程语言>正文

如何把汉字日期转换成数字 十的处理python python中文日期转换为日期

    前几天在做项目的时候遇到了一个关于日期当中汉字转换的问题。平时系统获取的时间都是阿拉伯数字,比如在代码中输入下面的语句:

print (datetime.datetime.now().year)

得到的结果会是2018.。本次项目我遇到的问题是在标准的Word证明模板里添加从数据库查询到的数据,其中证明模板的最后是开证明当天的日期,获取当天的日期本来是一件很简单的事情,但是模板当中要求时间要用汉字进行书写,譬如:二〇一八年九月二十九日。对于编程开发经验较少的我来说,当时就懵了。期初我以为Python当中会有相应的转换方法,可惜查看了一番之后发现并没有写好的转换方法,没办法,只能自己写一个方法来实现这个目标。

     在写方法之前,整理了一下转换的思路。首先,年,月,日三个日期单位转换为汉字之后,他们的读法和写法是不一样的。年通常是按照每一位去读的,比如说今年2019年,读法和写法都是二〇一九年,而不是两千零一十九年,这样的话在方法当中通过循环年的每一位数据进行转换就可以。月和日都是按照对应的数字来读的,比如9月29日,读法和写法应该为九月二十九日,而不应该是九月二九日。在根据一年当中月分为十二个月,每月都有28-31不等的天数,分为以下几种情况:

   这里声明两个变量,分别是

 int month

int  day

月数的三种情况是month <10 ,month ==10,month>10(因为时间是系统自动获取的,所以这里默认month>0 and month<12)

天数的四种情况是 day <10,  day ==10, 10<day<20,day==20, day>20(因为时间是系统自动获取的,所以这里默认day>0 and day<31)

在确定好之后具体的代码如下:

# -*- coding: utf-8 -*-
from __future__ import print_function
import datetime
from mailmerge import MailMerge
date_map = {
    0: '〇',
    1: '一',
    2: '二',
    3: '三',
    4: '四',
    5: '五',
    6: '六',
    7: '七',
    8: '八',
    9: '九'
}


def chinese2digits(num, type):
    str_num = str(num)
    result = ''
    if type == 0:
        for i in str_num:
            result = '{}{}'.format(result, date_map.get(int(i)))
    if type == 1:
        result = '{}十{}'.format(date_map.get(int(str_num[0])), date_map.get(int(str_num[1])))
    if type == 2:
        result = '十{}'.format(date_map.get(int(str_num[1])))
    if type == 3:
        result = '十'
    if type == 4:
        result = '二十'
    return result


year =chinese2digits(datetime.datetime.now().year, 0)
print(year)
date_month = datetime.datetime.now().month
if date_month == 10:
    month = chinese2digits(date_month, 3)
    print(month)
if date_month > 10:
    month = chinese2digits(date_month, 2)
    print(month)
if date_month < 10:
    month = chinese2digits(date_month, 0)
    print(month)
date_day = datetime.datetime.now().day
if date_day < 10:
    day = chinese2digits(date_day, 0)
    print(day)
if 10 < date_day < 20:
    day = chinese2digits(date_day, 2)
    print(day)
if date_day > 20:
    day = chinese2digits(date_day, 1)
    print(day)
if date_day == 10:
    day = chinese2digits(date_day, 3)
    print(day)
if date_day == 20:
    day = chinese2digits(date_day, 4)
    print(day)

希望本文可以帮助到大家。


https://www.xamrdz.com/lan/5f21957278.html

相关文章: