[API Proposal]: Add support for VietnameseLunisolarCalendar
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 30/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Stale
- Tech stack
- csharp
- Domain
- localization
Research direction
The proposal names VietnameseLunisolarCalendar and its EastAsianLunisolarCalendar base, and links the existing Japanese, Korean, Taiwan, and Chinese calendar APIs. Start by comparing those existing calendar implementations and determine how the Vietnamese timezone affects new-moon calculations. No repository files or tests are named; done means an agreed API and correct Vietnamese lunisolar date conversions.
Written by the indexing model from the issue text.
Description
Background and motivation
There are JapaneseLunisolarCalendar, KoreanLunisolarCalendar, TaiwanLunisolarCalendar, ChineseLunisolarCalendar but no VietnameseLunisolarCalendar. What's even weirder is that Japan doesn't even use Lunisolar calendar nowadays, unlike Vietnamese people who use it extensively, and celebrate Lun(isol)ar New Year and other events in Lunisolar calendar just like the other East Asian cultures
API Proposal
Since Vietnamese is in the CJKV area (Sinosphere), its calendar is also the same
public class VietnameseLunisolarCalendar : System.Globalization.EastAsianLunisolarCalendar
The only difference is the timezone that's used to calculate the new moon
API Usage
using System;
using System.Globalization;
public class VietnameseLunisolarCalendarExample
{
public static void Main(string[] args)
{
VietnameseLunisolarCalendar calendar = new VietnameseLunisolarCalendar();
// Convert a Gregorian date to VietnameseLunisolar
DateTime gregorianDate = new DateTime(2025, 6, 12);
int year = calendar.GetYear(gregorianDate);
int month = calendar.GetMonth(gregorianDate);
int day = calendar.GetDayOfMonth(gregorianDate);
// Display the converted VietnameseLunisolar date
Console.WriteLine($"Gregorian Date: {gregorianDate}");
Console.WriteLine($"VietnameseLunisolar Year: {year}");
Console.WriteLine($"VietnameseLunisolar Month: {month}");
Console.WriteLine($"VietnameseLunisolar Day: {day}");
// Example: Convert a VietnameseLunisolar date back to Gregorian
int vietnameseYear = 2025;
int vietnameseMonth = 1;
int vietnameseDay = 1;
DateTime vietnameseDate = calendar.ToDateTime(vietnameseYear, vietnameseMonth, vietnameseDay, 0, 0, 0, 0);
Console.WriteLine($"VietnameseLunisolar Date (year {vietnameseYear}, month {vietnameseMonth}, day {vietnameseDay}): {vietnameseDate}");
}
}
Alternative Designs
No response
Risks
No response
- Dominant language
- C#
- Stars
- 18.3k
- Forks
- 5.6k
- PR merge metrics
- PR metrics pending
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from dotnet/runtime
-
agentic-workflows untriaged
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
-
area-System.Reflection blocking-clean-ci-optional Known Build Error os-mac-os-x untriaged
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
area-CodeGen-coreclr untriaged
Difficulty 1/5 Under an hour Newbie friendliness 92/100
-
agentic-workflows untriaged
Difficulty 1/5 Under an hour Newbie friendliness 78/100
-
area-VM-meta-mono untriaged
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
-
:watch: Not Triaged 11.0 fundamentals/subsvc
Difficulty 2/5 1-3 hours Newbie friendliness 92/100
dotnet/AspNetCore.Docs#37699 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
SubtitleEdit/subtitleedit#15108 · 1 comment ·
-
area/docs-content Bug pulumi/docs
Difficulty 1/5 1-3 hours Newbie friendliness 94/100
-
Create parent directories only after the containment check in InstallHelper.TryExtractToDirectory Open
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
PowerShell/PSResourceGet#2056 ·