সূর্য সিদ্ধান্ত পঞ্জিকা সকল প্রবন্ধ

একাদশী নির্ণয়: স্মার্ত, নিম্বার্ক ও গোস্বামী রীতির পার্থক্য

স্মার্ত, গোস্বামী ও নিম্বার্ক একাদশী নির্ণয়ে sunrise, ৯৬-minute অরুণোদয়, ৪৫ দণ্ড, তিথিক্ষয়-বৃদ্ধি, মহাদ্বাদশী ও পারণ window-এর ব্যাখ্যা ও C# implementation।

“আজ একাদশী তিথি”—এই তথ্য এবং “আজ একাদশীর উপবাস”—এই সিদ্ধান্ত এক নয়। প্রথমটি Sun–Moon angular separation থেকে পাওয়া astronomical state; দ্বিতীয়টি sunrise, অরুণোদয়, তিথির দৈর্ঘ্য, পরের sunrise, দ্বাদশী ও নির্বাচিত পরম্পরার বিধি মিলিয়ে পাওয়া observance result।

একই একাদশী তিথিতে আলাদা উপবাস-দিন কেন?

তিথির কোনো midnight boundary নেই। চন্দ্র ও সূর্যের নিরয়ণ দ্রাঘিমার পার্থক্য প্রতি ১২° অতিক্রম করলে নতুন তিথি শুরু হয়। ফলে একাদশী সকাল, বিকেল বা গভীর রাতে শুরু/শেষ হতে পারে। একটি একাদশী:

  • একটি sunrise স্পর্শ করতে পারে;
  • দুটি consecutive sunrise স্পর্শ করতে পারে;
  • দুই sunrise-এর মাঝখানে শুরু ও শেষ হয়ে কোনো sunrise-ই স্পর্শ না করতে পারে;
  • sunrise-এ চললেও তার ৯৬ মিনিট আগে অরুণোদয়ে দশমী থাকতে পারে;
  • প্রথম sunrise-এর পর ৪৫ দণ্ড অতিক্রম করে গভীর রাত পর্যন্ত থাকতে পারে;
  • পরের দ্বাদশী খুব ছোট বা বিশেষ নক্ষত্র-যোগযুক্ত হতে পারে।

এই pattern-গুলোর জন্য school-specific সিদ্ধান্ত আলাদা হয়। একটি ভালো app সব profile-এর ফল পাশাপাশি দেখাবে, কিন্তু “একটিই সর্বজনীন সঠিক তারিখ” বলে অন্যগুলো লুকাবে না।

প্রথম স্তর: একটিই astronomical timeline

School নির্বাচন করার আগে calculation engine একটি নিরপেক্ষ timeline তৈরি করবে:

শুক্লপক্ষ ও কৃষ্ণপক্ষের একাদশী আলাদা index হলেও rule-engine-এ দুটিকেই normalized lunar-day number ১১ হিসেবে রাখা যায়। Root solver দিয়ে একাদশীর exact start ও end absolute instant বের করুন। তারপর প্রতিটি candidate local date-এর:

  • Project sunrise;
  • অরুণোদয় = sunrise − ৯৬ মিনিট;
  • পরবর্তী sunrise;
  • sunrise + ৪৫ দণ্ড;
  • দ্বাদশীর start/end এবং Hari-vāsara end;
  • প্রাসঙ্গিক nakṣatra interval

একবার calculate করুন। School profiles কেবল এই একই timeline-এর ওপর পৃথক predicates প্রয়োগ করবে। কোনো profile-এর জন্য lunar longitude বা তিথির boundary বদলানো যাবে না।

প্রয়োজনীয় পরিভাষা

শব্দCalculation-এ অর্থ
উদয়ব্যাপিনীনির্বাচিত local sunrise-এ তিথি উপস্থিত
অরুণোদয়Project sunrise-এর ৯৬ absolute minutes বা ৪ দণ্ড আগে
দশমী-বিদ্ধানির্বাচিত Vaiṣṇava profile-এর critical pre-sunrise moment/window-এ দশমীর স্পর্শ
শুদ্ধ একাদশীProfile-defined impurity test উত্তীর্ণ একাদশী
ক্ষয়একাদশী দুই sunrise-এর মাঝখানে শুরু ও শেষ; কোনো sunrise স্পর্শ করে না
বৃদ্ধিএকাদশী দুই consecutive sunrise স্পর্শ করে
মহাদ্বাদশীবিশেষ tithi বা nakṣatra condition-এ উপবাস দ্বাদশীতে স্থানান্তরিত
পারণউপবাসের পর অনুমোদিত সময়ে ব্রতভঙ্গ
Hari-vāsaraদ্বাদশীর প্রথম চতুর্থাংশ; selected profile-এ পারণ-বর্জিত interval

“বিদ্ধা”র সূক্ষ্ম শ্রেণি—vedha, ativedha, mahāvedha—কিছু source-এ অরুণোদয় window-এর কত অংশ দশমী দ্বারা স্পর্শিত তার ওপর নির্ভর করে। Project যদি এই subtypes দেখায়, threshold-গুলো profile metadata-তে স্পষ্ট করুন; একটি generic boolean-এ সবকিছু হারাবেন না।

তিনটি project profile এক নজরে

Profile IDPrimary testLater-day trigger
smarta-sunrise-v1একাদশী local sunrise-এ আছে কি নাদুই-day/ক্ষয় case-এর স্মার্ত tie-break
goswami-arunodaya-v1Sunrise এবং ৯৬ মিনিট আগের অরুণোদয়দশমী-বিদ্ধা, বৃদ্ধি বা Mahādvādaśī override
nimbarka-45-danda-v1প্রথম sunrise এবং sunrise+৪৫ দণ্ড boundaryএকাদশী ৪৫ দণ্ড অতিক্রম করলে পরের দিন

নাম নয়, profile ID result-এ সংরক্ষণ করুন। ভবিষ্যতে authority বা boundary interpretation বদলালে v2 তৈরি করুন; পুরোনো v1 silentভাবে পরিবর্তন করলে historical export পুনরুৎপাদন করা যাবে না।

স্মার্ত profile: sunrise প্রথম anchor

Project-এর basic স্মার্ত profile-এ যে local date-এর sunrise-এ একাদশী চলমান থাকে, সেই দিন fasting candidate। সাধারণ pattern:

  1. একাদশীর start/end absolute instant নিন;
  2. যে প্রথম sunrise [EkadashiStart, EkadashiEnd)-এর মধ্যে পড়ে তা খুঁজুন;
  3. একটি sunrise থাকলে সেই local date নির্বাচন করুন;
  4. দুটি sunrise থাকলে profile-এর first-day/alternate-day rule প্রকাশ করুন;
  5. কোনো sunrise না থাকলে kṣaya fallback প্রয়োগ করুন;
  6. পরের দিন dvādaśī-তে পারণ window তৈরি করুন।

Public calendar-এ দুই-day case হলে “স্মার্ত” ও “বিকল্প/বৈষ্ণব” আলাদা label দেখানো যায়। কোনো website-এর first/second day convention copy করার আগে তার target community ও rule source মিলিয়ে নিন।

গোস্বামী/গৌড়ীয় profile: অরুণোদয়-শুদ্ধি ও Mahādvādaśī

এই project-এর গোস্বামী profile sunrise-এর আগে চার দণ্ড বা ৯৬ মিনিটের অরুণোদয় instant পরীক্ষা করে:

একাদশী sunrise-এর কয়েক মিনিট আগে শুরু হলেও অরুণোদয়ে দশমী চলতে পারে। তখন sunrise-state “একাদশী”, কিন্তু profile অনুযায়ী দিনটি দশমী-বিদ্ধা; fasting পরের eligible day বা Mahādvādaśī-তে যেতে পারে।

দুই sunrise-এ একাদশী থাকলে later day-কে Dvādaśī-yukta preference দেওয়া হতে পারে। আবার একাদশী কোনো sunrise স্পর্শ না করলে, অথবা dvādaśī নিজেই অস্বাভাবিকভাবে ক্ষয়প্রাপ্ত হলে, Mahādvādaśī classification আগে করতে হবে। তাই implementation order:

শুধু if (tithiAtSunrise == Ekadashi) ব্যবহার করলে Dashami-viddha, Unmīlanī, Vyañjulī বা Trispṛśā case ধরা পড়বে না।

নিম্বার্ক profile: ৪৫ দণ্ড boundary

এই project-এ printed Bengali Panjika comparison-এর জন্য ব্যবহৃত nimbarka-45-danda-v1 profile-এর operational rule:

উদাহরণস্বরূপ, কোনো দিনের sunrise ৬:০০ AM হলে ৪৫ দণ্ড boundary রাত ১২:০০। একাদশী বিকেল ৪টায় শেষ হলে first day; রাত ২টায় শেষ হলে এই profile later day নির্বাচন করতে পারে—যদিও পরের sunrise-এর আগেই একাদশী শেষ হয়ে যায়। এ কারণেই নিম্বার্ক result স্মার্ত ও গোস্বামী result থেকে কখনও আলাদা হয়।

Exact equality—EkadashiEnd == Cutoff—এর policy configuration-এ রাখুন। এই article-এর sample > ব্যবহার করে; printed authority যদি boundary-touch later day হিসেবে নেয়, >= profile version তৈরি করুন। Floating-point degree equality নয়, solved instants-এর UTC ticks compare করুন।

ক্ষয়, বৃদ্ধি ও দুই সূর্যোদয়ের pattern

PatternTimelineকেন special rule লাগে
Ordinaryএকাদশী একটি sunrise স্পর্শ করেPrimary school test যথেষ্ট হতে পারে
Dashami-viddhaঅরুণোদয়ে দশমী, sunrise-এ একাদশীগোস্বামী date later হতে পারে
Kṣayaএক sunrise-এর পরে শুরু, next sunrise-এর আগে শেষকোনো sunrise candidate নেই
Vṛddhiএকাদশী দুই sunrise স্পর্শ করেFirst বনাম second-day preference
Late EkadashiFirst sunrise-এ আছে, ৪৫ দণ্ডের পরে শেষNimbarka profile later day নিতে পারে
Dvādaśī-kṣayaদ্বাদশী sunrise-গুলোর মাঝে দ্রুত শেষPāraṇa ও Mahādvādaśī special handling

Sunrise count করার সময় range অন্তত একাদশী শুরুর আগের local date থেকে শেষের পরের দুই date পর্যন্ত নিন। শুধু civil date of EkadashiStart এবং পরের date পরীক্ষা করলে timezone-এর কারণে candidate বাদ পড়তে পারে।

মহাদ্বাদশী: fasting-day selection-এর override

গোস্বামী/গৌড়ীয় calculation-এ কিছু বিশেষ tithi বা nakṣatra pattern-এ একাদশীর উপবাস দ্বাদশীতে হয়। বহুল উল্লিখিত আট প্রকার:

নামCore trigger-এর সংক্ষিপ্ত ধারণাEngine input
উন্মীলনী (Unmīlanī)একাদশীর বৃদ্ধি/দুই sunrise patternEkadashi interval + sunrises
ব্যঞ্জুলী (Vyañjulī)দীর্ঘ দ্বাদশী, বিশেষ sunrise-spanning conditionDvadashi interval + sunrises
ত্রিস্পৃশা (Trispṛśā)একাদশী–দ্বাদশী–ত্রয়োদশীর বিশেষ তিন-স্পর্শ patternতিন তিথির transitions
পক্ষবর্ধিনী (Pakṣavardhinī)পরবর্তী অমাবস্যা বা পূর্ণিমার বৃদ্ধিFortnight-এর later tithi spans
জয়া (Jayā)শুক্লপক্ষের relevant দিন ও পুনর্বসু-যোগPakṣa + Punarvasu interval
বিজয়া (Vijayā)শুক্ল দ্বাদশীতে শ্রবণা-যোগDvadashi + Shravana
জয়ন্তী (Jayantī)শুক্ল দ্বাদশীতে রোহিণী-যোগDvadashi + Rohini
পাপনাশিনী (Pāpanāśinī)শুক্ল দ্বাদশীতে পুষ্যা-যোগDvadashi + Pushya

উপরের table detection-এর outline, সম্পূর্ণ śāstric adjudication নয়। “যোগ” বলতে sunrise, whole day, sunset বা নির্দিষ্ট overlap—কোন threshold নেওয়া হবে তা authority-specific। Hari-bhakti-vilāsa বা নির্বাচিত institutional calendar থেকে exact predicate লিখে profile test fixture বানান। নাম দেখে আন্দাজে event বসাবেন না।

Mahādvādaśī detector fasting-date selector-এর আগে চলবে, কিন্তু raw tithi result বদলাবে না। Daily page-এ লেখা উচিত: “আজ তিথি: দ্বাদশী; উপবাস: Vijaya Mahādvādaśī।” এতে astronomical date ও ritual observance দুইটিই সত্য থাকে।

পারণ: fasting date নির্বাচনের পরে নতুন calculation

পারণ শুধু “পরদিন সকালে” নয়। একটি সাধারণ Vaiṣṇava profile-এ:

PratahEnd হলো sunrise-to-sunset daylight-এর প্রথম পঞ্চমাংশের end। যদি BasicStart < BasicEnd, এটি preferred window হতে পারে। না হলে school-specific fallback দরকার—যেমন dvādaśī শেষ হওয়ার আগে short window, Madhyāhna এড়িয়ে Aparāhna, অথবা dvādaśī sunrise-এর আগেই শেষ হলে exception।

অতএব parana result-এ একটিমাত্র start/end নয়, reason code রাখুন:

  • AFTER_SUNRISE;
  • AFTER_HARI_VASARA;
  • BEFORE_DVADASHI_END;
  • WITHIN_PRATAH;
  • APARAHNA_FALLBACK;
  • DVADASHI_ENDED_BEFORE_SUNRISE_EXCEPTION।

Fasting day যদি Mahādvādaśī-তে shift করে, parana day-ও তার পরের local day হবে। আগে থেকে “EkadashiStart-এর civil date + 2” hard-code করবেন না।

প্রস্তাবিত calculation pipeline

  1. Location, Windows time-zone ID ও solar profile resolve করুন;
  2. Relevant fortnight-এর Dashami–Trayodashi transition instants solve করুন;
  3. Candidate dates-এর sunrise, arunodaya, sunset ও next sunrise তৈরি করুন;
  4. Ekadashi interval কতটি sunrise স্পর্শ করে count করুন;
  5. Kṣaya, vṛddhi, Dashami-viddha ও late-45-daṇḍa flags তৈরি করুন;
  6. Mahādvādaśī tithi-based detectors চালান;
  7. Mahādvādaśī nakṣatra-based detectors চালান;
  8. প্রতিটি school profile-এর fasting date select করুন;
  9. Selected fasting date থেকে parana day derive করুন;
  10. Dvādaśī, Hari-vāsara ও daytime intervals থেকে parana window বানান;
  11. Decision trace, source/profile version ও warnings result-এ রাখুন;
  12. HTML, calendar grid, print, API ও XML একই result model render করবে।

এই pipeline-এ astronomy এবং religious policy আলাদা। Ephemeris বদলালে transition instants বদলাতে পারে; policy বদলালে selection বদলাতে পারে। Result metadata দেখে কোন স্তরে পরিবর্তন হয়েছে বোঝা যায়।

C# 5-compatible data model

public enum EkadashiSchool
{
    Smarta,
    GoswamiGaudiya,
    Nimbarka45Danda
}

public sealed class EkadashiRuleProfile
{
    public string Id { get; set; }
    public EkadashiSchool School { get; set; }
    public int ArunodayaMinutes { get; set; }
    public int LateCutoffDandas { get; set; }
    public bool LaterDayOnCutoffEquality { get; set; }
    public bool EnableMahadvadashi { get; set; }
    public string AuthorityNote { get; set; }
}

public sealed class TithiSpan
{
    public int NumberInPaksha { get; set; }
    public DateTimeOffset Start { get; set; }
    public DateTimeOffset End { get; set; }

    public bool Contains(DateTimeOffset instant)
    {
        DateTime utc = instant.UtcDateTime;
        return utc >= Start.UtcDateTime && utc < End.UtcDateTime;
    }
}

Candidate observation:

public sealed class EkadashiCandidate
{
    public DateTime LocalDate { get; set; }
    public DateTimeOffset Sunrise { get; set; }
    public DateTimeOffset Arunodaya { get; set; }
    public DateTimeOffset FortyFiveDandaCutoff { get; set; }
    public bool EkadashiAtSunrise { get; set; }
    public bool EkadashiAtArunodaya { get; set; }
    public bool DashamiAtArunodaya { get; set; }
    public bool EkadashiPastFortyFiveDandas { get; set; }
}

static DateTimeOffset AddAbsoluteMinutes(
    DateTimeOffset instant,
    int minutes,
    TimeZoneInfo zone)
{
    DateTimeOffset utc = instant.ToUniversalTime().AddMinutes(minutes);
    return TimeZoneInfo.ConvertTime(utc, zone);
}

Candidate builder:

static EkadashiCandidate Observe(
    DateTime localDate,
    SunDayResult sun,
    TithiSpan dashami,
    TithiSpan ekadashi,
    EkadashiRuleProfile profile,
    TimeZoneInfo zone)
{
    DateTimeOffset arunodaya = AddAbsoluteMinutes(
        sun.Sunrise, -profile.ArunodayaMinutes, zone);

    DateTimeOffset cutoff = AddAbsoluteMinutes(
        sun.Sunrise, profile.LateCutoffDandas * 24, zone);

    bool afterCutoff = profile.LaterDayOnCutoffEquality
        ? ekadashi.End.UtcDateTime >= cutoff.UtcDateTime
        : ekadashi.End.UtcDateTime > cutoff.UtcDateTime;

    return new EkadashiCandidate
    {
        LocalDate = localDate.Date,
        Sunrise = sun.Sunrise,
        Arunodaya = arunodaya,
        FortyFiveDandaCutoff = cutoff,
        EkadashiAtSunrise = ekadashi.Contains(sun.Sunrise),
        EkadashiAtArunodaya = ekadashi.Contains(arunodaya),
        DashamiAtArunodaya = dashami.Contains(arunodaya),
        EkadashiPastFortyFiveDandas = afterCutoff
    };
}

School selector-এর simplified skeleton:

static DateTime SelectOrdinaryFastingDate(
    EkadashiRuleProfile profile,
    EkadashiCandidate first,
    EkadashiCandidate second)
{
    if (profile.School == EkadashiSchool.Smarta)
        return first.EkadashiAtSunrise
            ? first.LocalDate : second.LocalDate;

    if (profile.School == EkadashiSchool.GoswamiGaudiya)
        return first.EkadashiAtSunrise &&
               first.EkadashiAtArunodaya &&
               !first.DashamiAtArunodaya
            ? first.LocalDate : second.LocalDate;

    if (profile.School == EkadashiSchool.Nimbarka45Danda)
        return first.EkadashiAtSunrise &&
               !first.EkadashiPastFortyFiveDandas
            ? first.LocalDate : second.LocalDate;

    throw new ArgumentOutOfRangeException("profile");
}

Pāraṇa model:

public sealed class ParanaWindow
{
    public DateTime LocalDate { get; set; }
    public DateTimeOffset Start { get; set; }
    public DateTimeOffset End { get; set; }
    public string RuleCode { get; set; }
    public bool IsException { get; set; }
}

static DateTimeOffset HariVasaraEnd(TithiSpan dvadashi)
{
    long ticks = (dvadashi.End.UtcDateTime
        - dvadashi.Start.UtcDateTime).Ticks;
    return dvadashi.Start.ToUniversalTime().AddTicks(ticks / 4L);
}

Time arithmetic UTC instant-এ করুন। DST change-এর রাতে local wall-clock AddHours(18) দেখলে একই instant পেলেও offset ভুলভাবে বহন হতে পারে; UTC-তে যোগ করে selected zone-এ ফেরত আনুন।

Daily page ও calendar grid-এ কী দেখাবেন?

একটি compact block:

উপরের তারিখ-সময় illustrative। Production result-এ calculated values আসবে। Calendar cell-এ school-specific badges ব্যবহার করা যায়:

User preference-এ default school রাখা যেতে পারে, তবে details page-এ অন্য ফলগুলো expandable comparison হিসেবে দেখান। Printed report-এর footer-এ profile ID বা human label থাকা উচিত।

কলকাতা, ঢাকা ও নিউ ইয়র্কে তারিখ বদলাতে পারে

তিথির start/end একই absolute astronomical instant, কিন্তু sunrise ও arunodaya স্থানীয়। New York sunrise-এ যে তিথি চলছে, একই instant sequence-এর মধ্যে Kolkata sunrise অন্য অবস্থানে পড়তে পারে। তাই:

  • এক শহরের একাদশী date অন্য শহরে copy করবেন না;
  • coordinates ছাড়া শুধু timezone যথেষ্ট নয়;
  • DST-aware historical time-zone rules ব্যবহার করুন;
  • Arunodaya প্রত্যেক local sunrise থেকে আলাদাভাবে বের করুন;
  • ৪৫ দণ্ড cutoff-ও local sunrise-anchored;
  • Parana day-এর sunrise পুনরায় solve করুন;
  • Cache key-তে latitude, longitude, timezone এবং profile ID রাখুন।

এই কারণেই ponjika.com, /bd ও /ny landing profiles একই engine ব্যবহার করলেও পৃথক location defaults রাখবে। URL-এ city/date দিলে API-ও সেই location-এর observance ফেরাবে।

Validation checklist

  1. Dashami, Ekadashi, Dvadashi ও Trayodashi transitions absolute instants;
  2. Tithi intervals half-open [start, end);
  3. Sunrise একই project solar profile থেকে;
  4. Arunodaya exactly sunrise − ৯৬ absolute minutes;
  5. ৪৫ দণ্ড exactly ১,০৮০ absolute minutes;
  6. ৪৫-দণ্ড equality policy versioned;
  7. একাদশী কত sunrise স্পর্শ করেছে count করা হয়েছে;
  8. No-sunrise Ekadashi kṣaya হিসেবে classified;
  9. Two-sunrise Ekadashi vṛddhi হিসেবে classified;
  10. Dashami at arunodaya detected;
  11. Ekadashi at sunrise কিন্তু not arunodaya case tested;
  12. Ekadashi end ৪৫ দণ্ডের এক second আগে test;
  13. Ekadashi end exactly ৪৫ দণ্ডে test;
  14. Ekadashi end ৪৫ দণ্ডের এক second পরে test;
  15. Mahādvādaśī detectors ordinary selector-এর আগে চলে;
  16. Unmīlanī regression case আছে;
  17. Vyañjulī regression case আছে;
  18. Trispṛśā regression case আছে;
  19. Pakṣavardhinī later Purnima/Amavasya span পরীক্ষা করে;
  20. Punarvasu, Shravana, Rohini ও Pushya যোগ পৃথকভাবে tested;
  21. Hari-vāsara = Dvadashi-এর প্রথম quarter;
  22. Parana sunrise-এর আগে খোলে না;
  23. Parana Hari-vāsara চলাকালে খোলে না;
  24. Ordinary parana Dvadashi end অতিক্রম করে না;
  25. Pratah window proportional daylight থেকে;
  26. Late Hari-vāsara fallback reason code দেয়;
  27. Mahādvādaśī fasting-এর পরের day-এ parana;
  28. DST spring-forward/fall-back tests আছে;
  29. Kolkata, Dhaka ও New York একই fixture-এ তুলনা করা হয়েছে;
  30. International Nimbarka calendar-এর known dates regression tested;
  31. Goswami profile Hari-bhakti-vilāsa/selected calendar fixtures-এর সঙ্গে তুলনা করা হয়েছে;
  32. Result-এ school/profile ID আছে;
  33. Result-এ selection reason আছে;
  34. HTML, print, XML ও API একই model ব্যবহার করে;
  35. Profile update করলে historical cache invalidated হয়।

উপসংহার

একাদশী নির্ণয়ে প্রথমে astronomy, পরে observance policy। একাদশীর start/end, local sunrise এবং Dvādaśī interval সবার জন্য একই raw data; কিন্তু স্মার্ত sunrise rule, গোস্বামী অরুণোদয়-শুদ্ধি ও Mahādvādaśī rule, এবং project-এর নিম্বার্ক ৪৫-দণ্ড rule আলাদা প্রশ্নের উত্তর দেয়। তাই ভিন্ন fasting date সবসময় calculation error নয়।

নির্ভরযোগ্য app প্রতিটি school-কে versioned profile হিসেবে রাখবে, special tithi pattern আগে classify করবে, তারপর fasting date এবং শেষে parana window নির্ণয় করবে। User-facing result-এ শুধু তারিখ নয়—sunrise, arunodaya, ৪৫-দণ্ড cutoff, Mahādvādaśī type এবং parana reason দেখালে সিদ্ধান্তটি গবেষণাযোগ্য ও পুনরুৎপাদনযোগ্য হয়।

সবশেষে স্থানীয় গুরু, মঠ বা মন্দিরের সিদ্ধান্ত ধর্মীয় আচরণে অগ্রাধিকার পেতে পারে। Software-এর লক্ষ্য সেই সিদ্ধান্তকে প্রতিস্থাপন করা নয়; ব্যবহৃত astronomical data ও rule profile সৎভাবে প্রকাশ করা।

তথ্যসূত্র ও আরও পাঠ

  1. Hari-bhakti-vilāsa, Vilāsa 12—Ekādaśī-nirṇayaḥ; Vaiṣṇava Ekādaśī determination-এর পাঠ ও অনুবাদ।
  2. Hari-bhakti-vilāsa, Vilāsa 13; Mahādvādaśī classification ও observance material.
  3. International Nimbarka Society—Calendar of Events; published Nimbarka observance dates ও Mahādvādaśī examples.
  4. Advaita-L archive—Ekādaśī tithi nirṇaya; চার ঘটিকা অরুণোদয় এবং vedha/ativedha/mahāvedha distinction-এর আলোচনা।
  5. ISKCON Desire Tree—Rules of Ekadashi; kṣaya, Mahādvādaśī ও later-day observance-এর explanatory outline.
  6. Drik Panchang—Ekadashi fasting days; Smārta ও alternate/Vaiṣṇava date presentation.
  7. PanchangTime—How Ekadashi Is Dated; local sunrise, ৯৬-minute arunodaya ও parana chain-এর worked explanation.
  8. Vaiṣṇava Calendar—Mahādvādaśī notes; tithi-based ও nakṣatra-based Mahādvādaśī classification.
  9. সূর্য সিদ্ধান্ত পঞ্জিকা project specification; smarta-sunrise-v1, goswami-arunodaya-v1 এবং printed-Panjika-fit nimbarka-45-danda-v1 profiles.

মন্তব্য, আলোচনা ও প্রশ্ন