C# 希伯来语/犹太日期转换

C# 希伯来语/犹太日期转换,c#,actionscript-3,actionscript,air,C#,Actionscript 3,Actionscript,Air,我想把公历日期(我们通常在美国使用的日期)转换成希伯来(犹太)日期。我正在使用AdobeAIR应用程序的AdobeFlashCS5。是否已经在ActionScript 3.0上开发了一些代码 经过一段时间的研究,我发现在VisualStudio上创建的windows应用程序具有满足这种需求的内置功能。有什么方法可以在windows窗体上或从AIR中调用函数吗?不幸的是,在四处搜索后,我找不到任何库或任何东西来获取flash中的希伯来文日期。然而,我发现这个网站: hebcal.com似乎接受U

我想把公历日期(我们通常在美国使用的日期)转换成希伯来(犹太)日期。我正在使用AdobeAIR应用程序的AdobeFlashCS5。是否已经在ActionScript 3.0上开发了一些代码


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

不幸的是,在四处搜索后,我找不到任何库或任何东西来获取flash中的希伯来文日期。然而,我发现这个网站:

hebcal.com似乎接受URL中GET变量中的公历日期,并返回正确的希伯来文日期。因此,从理论上讲,您可以使用flashurloader在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.");
    }
}
导入flash.net.urloader;
导入flash.events.Event;
导入flash.net.URLRequest;
var currentDate:日期=新日期();
var dateLoader:URLLoader=新的URLLoader();
var dateQueryURL:String='1〕http://www.hebcal.com/converter/?gd=“+currentDate.date+”&gm=”+(currentDate.month+1)+”&gy=“+currentDate.fullYear+”&g2h=Convert+Gregorian+to+Hebrew+date';
跟踪(dateQueryURL);
dateLoader.addEventListener(Event.COMPLETE,onDateConverted);
load(新的URLRequest(dateQueryURL));
var hebrewDateSearchRegexp:RegExp=/([a-zA-Z0-9,]{1,30})(?=0){
//在字符串中找到了日期
hebrewDate=dateArr[0];
trace(“当前希伯来语日期为:“+hebrewDate”);
}否则{
跟踪(“检索当前希伯来文日期时出错”);
}
}
所以基本上我只使用一个正则表达式,它只查找/选择HTML中包含希伯来语日期的部分。然后,我使用string.match()提取它,并将其输出到跟踪语句中


还请注意,对于currentDate.month,我必须将其增加1,因为flash从0到11计算月份,而hebcal.com上的工具从1到12计算月份。

我不确定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);
}
//
///将公历日期转换为其希伯来日期字符串表示形式,
///使用自定义日期时间格式字符串。
/// 
///要转换的值。
///标准或自定义日期时间格式字符串。
公共静态字符串ToJewishDateString(此日期时间值,字符串格式)
{
var ci=CultureInfo.CreateSpecificCulture(“he IL”);
ci.DateTimeFormat.Calendar=新的希伯来语Calendar();
返回值.ToString(格式,ci);
}

正是我想要的。托达。