7 位 Julian 日期到普通日历日期
7-digit Julian Date to Normal Calendar Date
如何将 7 位儒略日期 (2016092
) 转换为常规日历日期 (MM-DD-YYYY
)?
我正在考虑取最后三位数字并将其转换为常规日期,然后将前四位数字附加为年份,但我必须考虑闰年。
预期输出:04-01-2016
我当前的(SQL)解决问题的代码是
DECLARE @dt char(7)
SET @dt = 2016092
SELECT DATEADD(dd, CAST(RIGHT(@dt, 3) AS int) - 1, CAST(LEFT(@dt, 4) AS datetime))
如何在 C# 上实现它?
您没有任何类型的儒略日(日期)格式,即
https://en.wikipedia.org/wiki/Julian_day
但是一种自定义格式可以从sql提供的重构:
year * 1000 + days from 1st Jan + 1
所以 2016092
表示从 1 月 1 日开始的 year 2016
和 092 - 1 = 91
天 (1st of Apr
)
实施:
int source = 2016092;
DateTime result = new DateTime(source / 1000, 1, 1).AddDays(source % 1000 - 1);
Console.WriteLine($"{result:MM-dd-yyyy}");
结果:
04-01-2016
如何将 7 位儒略日期 (2016092
) 转换为常规日历日期 (MM-DD-YYYY
)?
我正在考虑取最后三位数字并将其转换为常规日期,然后将前四位数字附加为年份,但我必须考虑闰年。
预期输出:04-01-2016
我当前的(SQL)解决问题的代码是
DECLARE @dt char(7)
SET @dt = 2016092
SELECT DATEADD(dd, CAST(RIGHT(@dt, 3) AS int) - 1, CAST(LEFT(@dt, 4) AS datetime))
如何在 C# 上实现它?
您没有任何类型的儒略日(日期)格式,即
https://en.wikipedia.org/wiki/Julian_day
但是一种自定义格式可以从sql提供的重构:
year * 1000 + days from 1st Jan + 1
所以 2016092
表示从 1 月 1 日开始的 year 2016
和 092 - 1 = 91
天 (1st of Apr
)
实施:
int source = 2016092;
DateTime result = new DateTime(source / 1000, 1, 1).AddDays(source % 1000 - 1);
Console.WriteLine($"{result:MM-dd-yyyy}");
结果:
04-01-2016