【问题标题】:Hebrew/Jewish date conversion希伯来语/犹太日期转换
【发布时间】:2011-09-23 21:45:16
【问题描述】:

我想将公历日期(我们通常在美国使用的日期)转换为希伯来(犹太)日期。我将 Adob​​e Flash CS5 用于 Adob​​e AIR 应用程序。是否已经在 ActionScript 3.0 上开发了一些代码?

经过一段时间的研究,我发现在 Visual Studio 上创建的 Windows 应用程序具有满足这种需求的内置功能。有什么方法可以在 Windows 窗体或 AIR 中调用函数吗?

【问题讨论】:

    标签: c# actionscript-3 actionscript air


    【解决方案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);
    }
    

    【讨论】:

    • 正是我想要的。户田。
    【解决方案2】:

    不幸的是,在四处搜索之后,我找不到任何库或任何东西可以在闪存中获取希伯来语日期。但是,我找到了这个网站:

    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 数据以提取希伯来日期。

    我继续了解如何使用 web 服务 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 计算。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-11
      • 2011-11-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多