Как я могу преобразовать отметку времени в удобную строку времени - PullRequest
1 голос
/ 23 апреля 2010

Я хочу иметь возможность представить «сегодня» и «вчера» для последних дат в моей заявке. У меня есть средство форматирования даты, используемое в настоящее время для отображения дат (извлеченное из записей данных), и я буду использовать его для чего-то более чем пару дней назад. Мне просто очень нравится, как приложение SMS в iPhone отображает даты последних сообщений и хочет подражать этому.

Метки времени, с которыми мне приходится работать, генерируются на сервере, с которого телефон загружает записи данных. Таким образом, все время генерируется в UTC (т.е. по Гринвичу).

Я уже некоторое время возился с этим, и разработанные мною решения кажутся ужасно скучными.

Может кто-нибудь предложить, как реализовать метод, который мог бы сделать это?

Приветствия - Стив.

1 Ответ

4 голосов
/ 23 апреля 2010

Если это веб-приложение, вы можете найти PrettyDate полезным. Я сделал реализацию vb.net, которую можно легко преобразовать в другой язык:

Public Function formatDate(ByVal time As DateTime) As String
    Dim datediff As TimeSpan = Now.Subtract(time)

    Dim days As Integer = datediff.TotalDays

    If days < 1 Then
        Dim seconds As Integer = datediff.TotalSeconds
        Select Case seconds
            Case 0 To 60
                Return "just now"
            Case 61 To 120
                Return "1 minute ago"
            Case 121 To 3600
                Return Math.Floor(seconds / 60) & " minutes ago"
            Case 3601 To 7200
                Return "1 hour ago"
            Case 7201 To 86400
                Return Math.Floor(seconds / 3600) & " hours ago"
        End Select
    ElseIf days < 31 Then
        Select Case days
            Case 1
                Return "yesterday"
            Case 2 To 7
                Return days & " days ago"
            Case Is > 7
                Return Math.Ceiling(days / 7) & " weeks ago"
        End Select
    Else : Return time.ToString("MM/dd/yyyy")
    End If
End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...