【问题标题】:ASP.NET get Julian Date from current dateASP.NET 从当前日期获取朱利安日期
【发布时间】:2011-12-20 19:30:54
【问题描述】:

嘿,我希望从当前日期创建一个像 YYDDD 这样的儒略日期格式,其中 DDD 是自一年开始以来的天数。

是否有任何 .NET 函数可以轻松做到这一点?

【问题讨论】:

标签: asp.net datetime


【解决方案1】:

因为,如果您使用 Julian 日期,您可能需要一次又一次地执行此操作,我建议为 System.DateTime 编写一个扩展函数,该函数将执行如下操作:

return (DateTime.Year % 100) * 1000 + DateTime.DayOfYear

ETA:如果您想要将 DateTime 转换为儒略日期格式(创建儒略日期格式的格式化字符串),我仍然建议使用扩展函数,但它看起来像这样:

public static string ToJulianDate(this DateTime date) 
{
    return string.Format("{0:00000}", (date.Year % 100) * 1000 + date.DayOfYear);
}

【讨论】:

  • 只是想知道自今年以来我如何更改为格式 YYDDD
  • @StevieB 啊,所以你不是在问如何将日期转换为代表儒略日期的数字,而是如何将 System.DateTime 格式化为 YYDDD(基本上,将其转换为那种格式?)
【解决方案2】:

没有我能想到的功能,但也许这会有所帮助:

Public Function Date2Julian(ByVal vDate As Date) As Long

    Date2Julian = CLng(Format(Year(vDate), "0000") _
                  + Format(DateDiff("d", CDate("01/01/" _
                  + Format(Year(vDate), "0000")), vDate) _
                  + 1, "000"))

End Function

【讨论】:

    【解决方案3】:

    这里有几个可能会有所帮助:

       public double GetJulianDate(DateTime pdtmDate)
     {
     DateTime dtmStart = new DateTime(1,1,1);
     TimeSpan objTS = new TimeSpan(pdtmDate.Ticks - dtmStart.Ticks);
     return objTS.TotalDays + 1721637;
     }
    
    
    Public Function Date2Julian(ByVal vDate As Date) As Long
    
        Date2Julian = CLng(Format(Year(vDate), "0000") _
                      + Format(DateDiff("d", CDate("01/01/" _
                      + Format(Year(vDate), "0000")), vDate) _
                      + 1, "000"))
    
    End Function
    

    【讨论】:

    • 是的,唯一的问题是我需要 YYDDD 格式的它,所以今年只过了几天
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-17
    • 2020-09-29
    • 1970-01-01
    相关资源
    最近更新 更多