Преобразовать юлианскую дату (не как двойную, а дату) в григорианскую дату

У меня есть юлианская дата: 1104-08-16, как мне преобразовать ее в григорианскую дату в C#?

Я нашел следующие ссылки... ссылка ссылка. Но все они используют юлианское значение даты как число с плавающей запятой / десятичное число.

В моём случае юлиан это не поплавок, это фактическая дата.

Любая помощь будет оценена.

1 ответ

Решение

Если вы не знаете или не заботитесь о часовых поясах, попробуйте следующее. Я использовал этот подход, потому что я не смог найти метод синтаксического анализа, который позволял бы вам указать, какой календарь интерпретировать ввод.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Globalization;

namespace julian2gregorian
{
    class Program
    {
        private static JulianCalendar jcal;
        static void Main(string[] args)
        {
            jcal = new JulianCalendar();
            string jDateString = "1104-08-16";
            char[] delimiterChars = { '-' };
            string[] dateParts = jDateString.Split(delimiterChars);
            int jyear, jmonth, jday;
            bool success = int.TryParse(dateParts[0], out jyear);
            success = int.TryParse(dateParts[1], out jmonth);
            success = int.TryParse(dateParts[2], out jday);
            DateTime myDate = new DateTime(jyear, jmonth, jday, 0, 0, 0, 0, jcal);
            Console.WriteLine("Date converted to Gregorian: {0}", myDate);
            Console.ReadLine();
        }
    }
}
Другие вопросы по тегам