希伯来语/犹太人日期转换

时间:2011-06-27 23:08:17

标签: c# actionscript-3 actionscript air

我想将格里高利日期(我们通常在美国使用的日期)转换为希伯来语(犹太日期)。我正在使用Adobe Flash CS5作为Adobe AIR应用程序。是否有一些已在ActionScript 3.0上开发的代码?

经过一段时间的研究后,我发现在Visual Studio上创建的Windows应用程序具有满足此类需求的内置函数。有没有办法在Windows窗体上调用函数或AIR中的某些东西?

最佳, 卢卡斯

2 个答案:

答案 0 :(得分:5)

不幸的是,在搜索之后,我找不到任何图书馆或任何东西来获取闪光灯中的希伯来日期。但是,我找到了这个网站:

http://www.hebcal.com/converter/?gd=21&gm=6&gy=2011&g2h=Convert+Gregorian+to+Hebrew+date

看来hebcal.com接受URL中GET变量中的格里高利日期,并返回正确的希伯来日期。 因此,理论上你可以使用flash URLLoader来加载由你当前的gregorian日期组成的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()提取它并在trace语句中输出它。

另请注意,使用currentDate.month,我必须将此值递增1,因为flash会将月份从0到11计算,而hebcal.com上的工具则从1-12开始计算。

答案 1 :(得分:1)

我不确定adobe产品,但由于你的问题用C#标记(这对我来说很奇怪),我会提供一个C#ex。非常有效地完成它的方法:

/// <summary>
/// Converts a gregorian date to its hebrew date string representation,
/// using custom DateTime format string.
/// </summary>
/// <param name="value">The <see cref="DateTime"/> value to convert.</param>
/// <param name="format">A standard or custom date-time format string.</param>
public static string ToJewishDateString(this DateTime value, string format)
{
  var ci = CultureInfo.CreateSpecificCulture("he-IL");
  ci.DateTimeFormat.Calendar = new HebrewCalendar();      
  return value.ToString(format, ci);
}
相关问题