我想将公历日期(我们通常在美国使用的日期)转换为希伯来(犹太)日期。我将 Adobe Flash CS5 用于 Adobe AIR 应用程序。是否已经在 ActionScript 3.0 上为此开发了一些代码?
经过一段时间的研究,我发现在 Visual Studio 上创建的 Windows 应用程序具有满足此类需求的内置功能。是否有某种方法可以在 Windows 窗体或 AIR 中调用函数?
最佳答案
不幸的是,在四处搜索之后,我找不到任何图书馆或任何东西来在 Flash 中获取希伯来语日期。但是,我找到了这个网站:
http://www.hebcal.com/converter/?gd=21&gm=6&gy=2011&g2h=Convert+Gregorian+to+Hebrew+date
hebcal.com 似乎接受 URL 中 GET 变量中的公历日期,并返回正确的希伯来日期。 因此,理论上您可以使用 flash URLLoader 在 flash 中加载由当前公历日期组成的 URL,然后解析请求响应中的 HTML 数据以提取希伯来语日期。
我继续研究如何使用网络服务 hebcal.com 为您执行此操作。这是完成此任务的 actionscript 3 代码:
import flash.net.URLLoader;
import flash.events.Event;
import flash.net.URLRequest;
var currentDate:Date = new Date();
var dateLoader:URLLoader = new URLLoader();
var dateQueryURL:String = 'http://www.hebcal.com/converter/?gd=' + currentDate.date + '&gm=' + (currentDate.month+1) + '&gy=' + currentDate.fullYear + '&g2h=Convert+Gregorian+to+Hebrew+date';
trace(dateQueryURL);
dateLoader.addEventListener(Event.COMPLETE, onDateConverted);
dateLoader.load(new URLRequest(dateQueryURL));
var hebrewDateSearchRegexp:RegExp = /([a-zA-Z0-9 ,]{1,30})(?=<\/b)/gixm;
function onDateConverted(e:Event):void
{
var queryResult:String = e.currentTarget.data as String;
var hebrewDate:String;
var dateArr:Array = queryResult.match(hebrewDateSearchRegexp);
if(dateArr && dateArr.length > 0){
//The date was found in the string
hebrewDate = dateArr[0];
trace("The current Hebrew date is: " + hebrewDate);
}else{
trace("Error retrieving current Hebrew date.");
}
}
所以基本上我只是使用一个正则表达式来查找/选择仅包含希伯来日期的 HTML 部分。然后我使用 string.match() 提取它并将其输出到跟踪语句中。
另请注意,对于 currentDate.month,我必须将其递增 1,因为 flash 从 0-11 计算月份,而 hebcal.com 上的工具从 1-12 计算。
关于c# - 希伯来语/犹太语日期转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6499982/