有人知道如何使用Excel/Google工作表函数将波斯日期转换为公历日期吗?例如:
1401/06/06
致:
2022/08/28
P. S:之前我发现了一个由Amir Fo编写的将公历转换为Jalali的函数,但我的问题是关于从波斯语(Shamsi)转换为公历。
tkqqtvp11#
这也可以使用Windows Excel 2010+和Excel 365(Windows或Mac)中提供的Power Query来完成使用增强查询的步骤
Data => Get&Transform => from Table/Range
from within sheet
#"Changed Type"
fa-IR
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", type date}} , "fa-IR")
flvtvl502#
尝试:
=TEXT(VLOOKUP("Gregorian calendar", IMPORTHTML("https://date-today.com/en/shamsi-"& REGEXEXTRACT(TO_TEXT(A1), "\/(\d+)")*1&"-"& REGEXEXTRACT(TO_TEXT(A1), "\/(\d+)\/")*1&"-"& REGEXEXTRACT(TO_TEXT(A1), "\d{4}")*1&"-to-gregorian-calendar.html", "table", 1), 2, ), "e/mm/dd")
或:
=TEXT(VLOOKUP("Gregorian calendar", IMPORTHTML("https://date-today.com/en/shamsi-"& REGEXEXTRACT(TO_TEXT(A1), "\d+")*1&"-"& REGEXEXTRACT(TO_TEXT(A1), "\/(\d+)\/")*1&"-"& REGEXEXTRACT(TO_TEXT(A1), "\d{4}")*1&"-to-gregorian-calendar.html", "table", 1), 2, ), "yyyy/mm/dd")
将谷歌工作表中的日期区域设置从公历转换为Jalali日历
d4so4syb3#
这是一个纯Excel解决方案,不需要互联网连接或Power Query。
**免责声明:**我找到了here函数,并做了一些修改,使其更具可读性。顺便说一句,我已经测试了1396/07/01到1401/07/01期间的函数,它工作正常,但使用它与广泛的测试,并在您自己的风险。
1396/07/01
1401/07/01
基本上,该函数计算自1278/10/11 Shamsi(等于Excel日期原点1900-01-01)以来的总天数。函数的结果是整数(日期值)。下面,您将找到两种格式的解决方案,一种使用新的LET函数(适用于Excel 2021和Office 365),另一种不使用:请注意,Shamsi日期的格式应为1401/07/21。使用LET:
1278/10/11
1900-01-01
LET
1401/07/21
=LET( y,VALUE(LEFT(A1,4)), m,VALUE(MID(A1,6,2)), d,VALUE(RIGHT(A1,2)), full_months,IF((m-1)<7,(m-1)*31,IF((m-1)>6,(m-1)*30+6)), total,(y-1)*365+full_months+d+INT((y-1)/4), IF(MOD(y,4)=0,total+1,total)-466710 )
旧版:
IF( MOD(VALUE(LEFT(A1,4)),4)=0, (VALUE(LEFT(A1,4))-1)*365+( IF( (VALUE(MID(A1,6,2))-1)<7, (VALUE(MID(A1,6,2))-1)*31, IF( (VALUE(MID(A1,6,2))-1)>6, (VALUE(MID(A1,6,2))-1)*30+6 ) ) )+VALUE(RIGHT(A1,2))+INT((VALUE(LEFT(A1,4))-1)/4)+1, (VALUE(LEFT(A1,4))-1)*365+( IF( (VALUE(MID(A1,6,2))-1)<7, (VALUE(MID(A1,6,2))-1)*31, IF( (VALUE(MID(A1,6,2))-1)>6, (VALUE(MID(A1,6,2))-1)*30+6 ) ) )+VALUE(RIGHT(A1,2))+INT((VALUE(LEFT(A1,4))-1)/4) )-466710
要将生成的整数转换为日期,请将单元格格式更改为Date或使用以下公式:
Date
TEXT(A2,"yyyy-mm-dd")
m0rkklqb4#
Microsoft Excel支持所有日历转换,关键是要一步一步来。假设我们要将单元格A1 = 10/10/1401从波斯历转换为英国历,并在单元格B1中设置结果
A1
10/10/1401
B1
在category的Number选项卡中右键单击B1〉Format cells...,选择Date并将其更改为所需的日历类型,在本例中为English。对于B1,还应键入公式=A1。
category
Number
Format cells...
English
=A1
右键单击category中Number选项卡中的A1〉Format cells...,选择Date,然后将日历类型更改为您的日期类型;在这种情况下为Persian。勾选复选标记input dates according to selected calendar
Persian
input dates according to selected calendar
在单元格A1中输入波斯日期。您将在单元格B1中得到转换日期。
year
month
day
4条答案
按热度按时间tkqqtvp11#
这也可以使用Windows Excel 2010+和Excel 365(Windows或Mac)中提供的Power Query来完成
使用增强查询的步骤
Data => Get&Transform => from Table/Range
或from within sheet
#"Changed Type"
fa-IR
作为区域性flvtvl502#
尝试:
或:
反向:
将谷歌工作表中的日期区域设置从公历转换为Jalali日历
d4so4syb3#
这是一个纯Excel解决方案,不需要互联网连接或Power Query。
**免责声明:**我找到了here函数,并做了一些修改,使其更具可读性。顺便说一句,我已经测试了
1396/07/01
到1401/07/01
期间的函数,它工作正常,但使用它与广泛的测试,并在您自己的风险。基本上,该函数计算自
1278/10/11
Shamsi(等于Excel日期原点1900-01-01
)以来的总天数。函数的结果是整数(日期值)。下面,您将找到两种格式的解决方案,一种使用新的
LET
函数(适用于Excel 2021和Office 365),另一种不使用:请注意,Shamsi日期的格式应为
1401/07/21
。使用
LET
:旧版:
要将生成的整数转换为日期,请将单元格格式更改为
Date
或使用以下公式:m0rkklqb4#
Microsoft Excel支持所有日历转换,关键是要一步一步来。
假设我们要将单元格
A1
=10/10/1401
从波斯历转换为英国历,并在单元格B1
中设置结果在
category
的Number
选项卡中右键单击B1
〉Format cells...
,选择Date
并将其更改为所需的日历类型,在本例中为English
。对于B1,还应键入公式=A1
。右键单击
category
中Number
选项卡中的A1
〉Format cells...
,选择Date
,然后将日历类型更改为您的日期类型;在这种情况下为Persian
。勾选复选标记
input dates according to selected calendar
在单元格
A1
中输入波斯日期。您将在单元格B1
中得到转换日期。year
、month
和day
的顺序。*