对于所有版本的Android,我想将Gregorian(西方)日期转换为波斯语(Shamsi)日期,反之亦然.
有没有完整可靠的库或算法?
我正在开发一个Java App,我有一个timeStamp(in long).我可以轻松地使用此代码将其更改为公历日期:
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(timeStamp);
Run Code Online (Sandbox Code Playgroud)
但我需要在Jalali日历中有日期.我搜索但没有找到任何好的图书馆.你知道一个可靠而好的库来转换(或用Jalali格式创建日期timeStamp)吗?我不需要实现或算法,因为这个问题太麻烦并且有很多规则,我需要一个可靠的解决方案
我fullcalendar在我的网站上使用(fullcalendar.io).
我的网站有另一种需要Jalali日历的语言.所以我尝试将fullcalendar格式更改为jalali,因为我看到此脚本使用moment.js并且moment.js可以选择使用jalali日期.
我无法找到如何以jalali格式切换和使用此日历.
TL;DR,要求是能够采用波斯 (Jalali) 日期(也称为波斯阳历回历) Esfand 19, 1400(即将"12/19/1400"其转换为其他日历(格里高利历、伊斯兰历、中国历、希伯来历等),而无需使用外部库或复杂的天文方程。并且无需使用 Javascript 中即将实现的新日期时间 API。
Javascript 内置方法Intl.DateTimeFormat()将公历日期转换为各种日历日期(18 个世界日历),包括输出字符串的格式。
但是,截至今天(2022 年 3 月),Javascript 不提供用于反向操作的内置方法,即将波斯日期(和其他日历的日期)转换回公历日期或其他日历。为此,您需要使用外部日期库来进行转换,例如“moment.js”等。
我进行日期转换的方法如下,作为 StackOverflow 推荐的这个问题的答案:我可以回答我自己的问题吗?
如您所知,Jalali 日历每四年有一次飞跃(当然,也有一些例外)
而不是一年 365 天,它有 366 天 :)
另一个问题是有些月份是 29 天,有些月份是 30 天,有些月份是 31 天:|
我使用矩库来生成这些日期(当然使用 fa 方法)
这个网站叫????? 做得很好。
var moment = require('moment-jalaali')
moment().format('jYYYY/jM/jD')
Run Code Online (Sandbox Code Playgroud)
现在我的问题是如何确定哪些月份是 29、30 和 31,哪一年是闰年?
我想在 Jalali 日历中找到一个公共日,我使用带有此代码的 npm Jalali-moment
var moment = require('jalali-moment');
moment().locale('fa').format('YYYY/M/D');
Run Code Online (Sandbox Code Playgroud)
这个网站做了这个叫做????? ????? 但我不知道他是怎么做到的。
有没有办法在不手动输入信息的情况下做到这一点?
我需要一个带有Jalaali(波斯语)日历的FullCalendar.
有一个很棒的插件,适用于moment.js,名为moment-jalaali.由于Moment对象在FullCalendar的API中使用,我认为应该有一种简单的方法可以使用该插件将默认日历转换为Jalali.
我已经发现这个解决方案不使用moment.js,听起来不是一个好的解决方案.
我在 Confluence 中使用 Confiforms 制作了一个表单,其中包括波斯日历字段。有一个过滤器控制宏来过滤记录。但此过滤器不适用于波斯日期。因为波斯日期保存为时间戳,但波斯日历字段显示日期,而不是时间戳,当我想过滤记录时,我应该在波斯日历字段中写入时间戳以使过滤器起作用。
问题是我希望当我选择日期时,它将时间戳而不是日期返回到字段。(见图)
是否有任何 JavaScript/jQuery 代码可以将字段的波斯日期条目转换为时间戳?
编辑:字段输入的 shamsi 日期格式为 dm-yy (例如 15-12-1400)
我有一个这样的函数:
var date = new Date();
var d = date.getDate();
var m = date.getMonth();
var y = date.getFullYear();
var hdr = {};
Run Code Online (Sandbox Code Playgroud)
还有另一个函数可以转换它:
function gregorian_to_jalali($g_y,$g_m,$g_d,$mod=''){
$g_y=tr_num($g_y); $g_m=tr_num($g_m); $g_d=tr_num($g_d);
$d_4=$g_y%4;
$g_a=array(0,0,31,59,90,120,151,181,212,243,273,304,334);
$doy_g=$g_a[(int)$g_m]+$g_d;
if($d_4==0 and $g_m>2)$doy_g++;
$d_33=(int)((($g_y-16)%132)*.0305);
$a=($d_33==3 or $d_33<($d_4-1) or $d_4==0)?286:287;
$b=(($d_33==1 or $d_33==2) and ($d_33==$d_4 or $d_4==1))?78:(($d_33==3 and $d_4==0)?80:79);
if((int)(($g_y-10)/63)==30){$a--;$b++;}
if($doy_g>$b){
$jy=$g_y-621; $doy_j=$doy_g-$b;
}else{
$jy=$g_y-622; $doy_j=$doy_g+$a;
}
if($doy_j<187){
$jm=(int)(($doy_j-1)/31); $jd=$doy_j-(31*$jm++);
}else{
$jm=(int)(($doy_j-187)/30); $jd=$doy_j-186-($jm*30); $jm+=7;
}
return($mod=='')?array($jy,$jm,$jd):$jy.$mod.$jm.$mod.$jd;
}
Run Code Online (Sandbox Code Playgroud)
我只是很困惑如何使用此函数将 hdr 日期转换为 jalali 日期?我尝试了这个但没有用:
var date = new jdate();
var d …Run Code Online (Sandbox Code Playgroud) jalali-calendar ×10
javascript ×5
calendar ×4
date ×3
datetime ×2
fullcalendar ×2
java ×2
jquery ×2
algorithm ×1
android ×1
c# ×1
confluence ×1
localization ×1
momentjs ×1
npm ×1
persian ×1
winforms ×1