Еврейское / Еврейское преобразование дат - PullRequest
5 голосов
/ 28 июня 2011

Я хотел бы преобразовать григорианские даты (те, которые мы обычно используем в Америке) в еврейские (еврейские) даты.Я использую Adobe Flash CS5 для приложения Adobe AIR.Есть ли какой-то код для этого, уже разработанный на ActionScript 3.0?

После некоторого времени исследования я обнаружил, что приложения Windows, созданные в Visual Studio, имеют встроенные функции для такой необходимости.Есть ли способ вызова функции в форме Windows или что-то из AIR?

Best, Lucas

Ответы [ 2 ]

5 голосов
/ 28 июня 2011

К сожалению, после поиска я не могу найти какую-либо библиотеку или что-нибудь, чтобы получить дату иврита во флэш-памяти. Тем не менее, я нашел этот сайт:

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

Похоже, что hebcal.com принимает григорианскую дату в переменных GET в URL и возвращает правильную дату на иврите. Таким образом, теоретически вы можете использовать флэш-URLLoader для загрузки URL-адреса, состоящего из вашей текущей григорианской даты, во флэш-памяти, а затем проанализировать данные HTML в ответе на запрос для извлечения даты на иврите.

Я понял, как это сделать для вас, используя веб-сервис hebcal.com. Вот код actioncript 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.

2 голосов
/ 19 января 2012

Я не уверен насчет продуктов 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...