Mega Code Archive

 
Categories / VB.Net Tutorial / Date Time
 

Moon Phase

Public Class Tester     Public Shared Sub Main         Dim phaseDay As Double         Dim result As String         phaseDay = MoonPhase(Now.ToUniversalTime)         result = "UTC is now: " & _            Now.ToUniversalTime.ToString("u") & vbNewLine & vbNewLine         If (phaseDay < 0) Then             result &= "Approx days until new moon: " & _                (-phaseDay).ToString("F1")         Else             result &= "Approx days since new moon: " & _                phaseDay.ToString("F1")         End If         Console.WriteLine(result)     End Sub     Public Shared Function MoonPhase(ByVal dateUtc As Date) As Double         Dim days As Double = dateUtc.Subtract(#1/1/1600#).TotalDays         Dim cycles As Double = days * 0.03386319 - 12.5         Return Math.IEEERemainder(cycles, 1.0) * 29.53059     End Function End Class UTC is now: 2007-05-12 04:09:30Z Approx days until new moon: 4.7