希伯来语/犹太日期转换
Posted
技术标签:
【中文标题】希伯来语/犹太日期转换【英文标题】:Hebrew/Jewish date conversion 【发布时间】:2011-09-23 21:45:16 【问题描述】:我想将公历日期(我们通常在美国使用的日期)转换为希伯来(犹太)日期。我将 Adobe Flash CS5 用于 Adobe AIR 应用程序。是否已经在 ActionScript 3.0 上开发了一些代码?
经过一段时间的研究,我发现在 Visual Studio 上创建的 Windows 应用程序具有满足这种需求的内置功能。有什么方法可以在 Windows 窗体或 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 计算。
【讨论】:
以上是关于希伯来语/犹太日期转换的主要内容,如果未能解决你的问题,请参考以下文章