c# - 7 位 Julian 日期到普通日历日期

标签 c# .net date calendar julian-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 表示 2016 年092 - 1 = 91从 1 月 1 日开始的第 1 天(4 月 1 日)

实现:

int source = 2016092;
DateTime result = new DateTime(source / 1000, 1, 1).AddDays(source % 1000 - 1);

Console.WriteLine($"{result:MM-dd-yyyy}");

结果:

04-01-2016

关于c# - 7 位 Julian 日期到普通日历日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47326991/

相关文章:

c# - 当我尝试使用作为链接添加到项目中的图像文件时,为什么会收到 IOException?

C#,基于套接字通信的二进制序列化

.net - 如何编译着色器 fx 文件以在 WPF 中使用?

c# - 如何使用反射在泛型类型中动态确定属性属于基类还是子类?

javascript - 根据一天中的时间更改图像

c# - StyledStringElement 'Tapped' 事件

c# - 如何在 C# 中设置 HttpWebRequest 的内容?

.net - 当绑定(bind)的 ListView 没有项目时显示一些文本

mysql - 列出两个日期之间所有星期的存储过程

php - 想要将 strtotime 值与当前时间进行比较并输出 : something x min ago