2011-12-20 3 views
0

Эй, я ищу, чтобы создать Юлианский формат даты, например YYDDD, с текущей даты, где DDD будет числом дней с начала года.ASP.NET get Julian Дата с текущей даты

Есть ли какие-либо функции .NET для этого?

+0

возможный дубликат [Конвертировать DateTime в Julian Date в C# (ToOADate Safe?)] (http://stackoverflow.com/questions/5248827/convert-datetime-to-julian-date-in-c-sharp-tooadate-safe) – kd7

ответ

2

Так, если вы работаете с датами юлианского , вам, вероятно, понадобится сделать это снова и снова, я предлагаю написать функцию расширения для System.DateTime, которая выполнила бы что-то вроде следующего:

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

ETA: Если то, что вы хотите сделать, это преобразовать DateTime в формате даты Julian (создать отформатированную строку в юлианском формате даты), я до сих пор предложить функцию расширения, но это будет выглядеть следующим образом:

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

просто интересно, как я меняю формат YYDDD, так что прошлое с этого года – StevieB

+0

@StevieB А, так что вы не спрашиваете, как конвертировать дату в число, представляющее юлианскую дату, но как отформатировать System.DateTime как YYDDD (в основном, преобразовать его в строку в этом формате?) –

0

Нет функций, которые я могу думать, но, возможно, это помогло бы:

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 
0

Вот несколько, которые могут помочь:

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 
+0

Да, проблема только в том, что мне нужно это в формате YYDDD, поэтому его только дни прошли в этом году – StevieB

Смежные вопросы