将天数转换为年、月、日
convert number of days into years,months,days
我需要将天数转换为年、月、日。
示例:根据 join(DOJ)
日期和 Relieve(DOR)
日期计算员工体验。我们有 DOJ, DOR and Number
他作为雇员工作的天数。
必须计算多少年月日。
Example : DOJ = 14 Feb 2000
DOR = 08 aug 2013
Output : 13 Years - 5 Months - 25 Days
提前致谢....
您无法将天数转换为年月日,因为您不知道这些天数在哪里。例如,它们可能跨越闰年的 2 月 29 日。
但是你已经有了两个日期可以使用,所以你可以像这样计算这个值:
Private Sub Button13_Click(sender As Object, e As EventArgs) Handles Button13.Click
Dim doj As Date = New Date(2000, 2, 14)
Dim dor As Date = New Date(2013, 8, 8)
MessageBox.Show(GetDateSpanText(doj, dor))
End Sub
Public Shared Function GetDateSpanText(fromDate As DateTime, Optional toDate As DateTime = Nothing) As String
Try
Dim years As Integer = 0, months As Integer = 0, days As Integer = 0
If toDate = Nothing Then toDate = DateTime.Now
Do Until toDate.AddYears(-1) < fromDate
years += 1
toDate = toDate.AddYears(-1)
Loop
Do Until toDate.AddMonths(-1) < fromDate
months += 1
toDate = toDate.AddMonths(-1)
Loop
Do Until toDate.AddDays(-1) < fromDate
days += 1
toDate = toDate.AddDays(-1)
Loop
Return String.Format("{0} Years {1} Months {2} Days", years, months, days)
Catch ex As Exception
Return "Error"
End Try
End Function
这对我有用:
var dor = new DateTime(2013, 08, 08);
var doj = new DateTime(2000, 02, 14);
var totalmonths = (dor.Year - doj.Year) * 12 + dor.Month - doj.Month;
totalmonths += dor.Day < doj.Day ? -1 : 0;
var years = totalmonths / 12;
var months = totalmonths % 12;
var days = dor.Subtract(doj.AddMonths(totalmonths)).Days;
您可以使用月份计算年和月,如果您有 30 个月,那么它将 return 2 年零 6 个月,方法是使用以下代码。
Math.Round((double)Months/12,0) Years and Month%12 Months
我需要将天数转换为年、月、日。
示例:根据 join(DOJ)
日期和 Relieve(DOR)
日期计算员工体验。我们有 DOJ, DOR and Number
他作为雇员工作的天数。
必须计算多少年月日。
Example : DOJ = 14 Feb 2000
DOR = 08 aug 2013
Output : 13 Years - 5 Months - 25 Days
提前致谢....
您无法将天数转换为年月日,因为您不知道这些天数在哪里。例如,它们可能跨越闰年的 2 月 29 日。
但是你已经有了两个日期可以使用,所以你可以像这样计算这个值:
Private Sub Button13_Click(sender As Object, e As EventArgs) Handles Button13.Click
Dim doj As Date = New Date(2000, 2, 14)
Dim dor As Date = New Date(2013, 8, 8)
MessageBox.Show(GetDateSpanText(doj, dor))
End Sub
Public Shared Function GetDateSpanText(fromDate As DateTime, Optional toDate As DateTime = Nothing) As String
Try
Dim years As Integer = 0, months As Integer = 0, days As Integer = 0
If toDate = Nothing Then toDate = DateTime.Now
Do Until toDate.AddYears(-1) < fromDate
years += 1
toDate = toDate.AddYears(-1)
Loop
Do Until toDate.AddMonths(-1) < fromDate
months += 1
toDate = toDate.AddMonths(-1)
Loop
Do Until toDate.AddDays(-1) < fromDate
days += 1
toDate = toDate.AddDays(-1)
Loop
Return String.Format("{0} Years {1} Months {2} Days", years, months, days)
Catch ex As Exception
Return "Error"
End Try
End Function
这对我有用:
var dor = new DateTime(2013, 08, 08);
var doj = new DateTime(2000, 02, 14);
var totalmonths = (dor.Year - doj.Year) * 12 + dor.Month - doj.Month;
totalmonths += dor.Day < doj.Day ? -1 : 0;
var years = totalmonths / 12;
var months = totalmonths % 12;
var days = dor.Subtract(doj.AddMonths(totalmonths)).Days;
您可以使用月份计算年和月,如果您有 30 个月,那么它将 return 2 年零 6 个月,方法是使用以下代码。
Math.Round((double)Months/12,0) Years and Month%12 Months