我必须将此日期转换为普通日期字符串/对象。
1994-04-11至11-04-1994。
答案 0 :(得分:1)
var arabicDate = "١٩٩٤-٠٤-١١";
var europeanDate = arabicDate.replace(/[\u0660-\u0669]/g, function(m) {
return String.fromCharCode(m.charCodeAt(m) - 0x660 + 0x30);
}).split('-').reverse().join('-');
console.log(europeanDate);
// => 11-04-1994
编辑:Derp。 Python,而不是JavaScript。我会把它留在这里供有人重写。
答案 1 :(得分:1)
我已经解决了这个问题。可能不是最好的,但它的工作:)
# -*- coding: utf8 -*-
import unicodedata
s = u"١٩٩٤-٠٤-١١"
def date_conv(unicode_arabic_date):
new_date = ''
for d in unicode_arabic_date:
if d != '-':
new_date+=str(unicodedata.decimal(d))
else:
new_date+='-'
return new_date
print date_conv(s)
1994年4月11日
答案 2 :(得分:1)
从阿拉伯语日期字符串创建日期对象:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from datetime import date
d = date(*map(int, u"١٩٩٤-٠٤-١١".split('-')))
# -> datetime.date(1994, 4, 11)
答案 3 :(得分:1)
这是我写的一个解决方法:
def arab_to_decimal(timestamp):
if not isinstance(timestamp, unicode) return
table = {1632: 48, # 0
1633: 49, # 1
1634: 50, # 2
1635: 51, # 3
1636: 52, # 4
1637: 53, # 5
1638: 54, # 6
1639: 55, # 7
1640: 56, # 8
1641: 57} # 9
return timestamp.translate(table)
arab_to_decimal(u"١٩٩٤-٠٤-١١")
答案 4 :(得分:0)
使用unicodedata.decimal
绝对是一个好主意。使用locale模块和time.strptime / time.strftime可能有一个很好的方法,但我在这台机器上没有任何阿拉伯语语言环境,所以我不打算进行实验。 :)
FWIW,这里是将Amadan的JavaScript代码直接翻译成Python函数。
import re
pat = re.compile(u'[\u0660-\u0669]', re.UNICODE)
def arabic_to_euro_digits(m):
return unichr(ord(m.group(0)) - 0x630)
def arabic_to_euro_date(arabic_date):
s = pat.sub(arabic_to_euro_digits, arabic_date)
return '-'.join(s.split('-')[::-1])
arabic_date = u'١٩٩٤-٠٤-١١'
print arabic_date
euro_date = arabic_to_euro_date(arabic_date)
print euro_date
<强>输出强>
١٩٩٤-٠٤-١١
11-04-1994