需要excel中的公式和c#将"yyyymmdd"格式的数据转换为julian日期格式"yyJJJ"?"JJJ"是提交的Julian日期.JJJ是1到365或999或366的数字吗?我不认为它是366,但我们确实有闰年所以它可能是闰年.
在Excel中我试图使用以下内容:
=Year() & DAYS360("20110101","20110930")
Run Code Online (Sandbox Code Playgroud)
在C#中,我使用now()来获取当前日期.但我想要1月1日和当前日期之间的天数.不确定这是否是正确的原型公式:
Prepend Two digit year format to the following
Number of Days between "20110101" and "20110930" in "YY" format
Run Code Online (Sandbox Code Playgroud)
Kev*_*vek 12
您可以简单地使用JulianCalendar类,而不是在C#中自己处理
今天要进入朱利安历法,你可以这样做:
JulianCalendar calendar = new JulianCalendar();
var today=DateTime.Today;
var dateInJulian = calendar.ToDateTime(today.Year, today.Month, today.Day, today.Hour, today.Minute, today.Second, today.Millisecond);
Run Code Online (Sandbox Code Playgroud)
编辑:
我意识到我没有帮助你以一种很好的方式获得你想要的YYJJJ格式的结果,这很简单:
var stringResult=string.Format("{0}{1}", dateInJulian.ToString("yy"), dateInJulian.DayOfYear);
Run Code Online (Sandbox Code Playgroud)
可悲的是,我认为没有相当于dateTime.ToString("JJJ");一年的日期,因此我的小string.Format()工作,但它的工作原理也一样!
EDIT2:
所以Phoog在评论中对我进行了一些教育,并指出你今天没有在Julian Calendar中寻找,这就是上面的代码将给出的关于JulianCalendar类的内容.相反,它似乎你正在寻找序数日期(这篇文章为未来的读者澄清添加).我将离开上面,以便有人不会犯同样的错误.我相信,你真正想要的是第一次编辑的代码,但没有JulianCalendar业务,所以:
var dateToConvert = DateTime.Today // Or any other date you want!
var stringResult=string.Format("{0}{1}", dateToConvert.ToString("yy"), dateToConvert.DayOfYear);
Run Code Online (Sandbox Code Playgroud)
根据这些文章,您应该使用"序数日期"而不是"朱利安日期":
http://en.wikipedia.org/wiki/Ordinal_date
http://en.wikipedia.org/wiki/Julian_day
根据第一种情况,序数日期的ISO标准规定了4位数年份,范围从1到366,因此1月1日是1.
这当然意味着3月到12月之间的日期将有两个可能的值,具体取决于日期是否在闰年.
因此,Bala的解决方案(+ 1在评论中给出选项)就足够了.
编辑:DateTimeJim Mischel指出,类型自己的DayOfYear属性更简单,可能更快.
| 归档时间: |
|
| 查看次数: |
27973 次 |
| 最近记录: |