如何使用日期格式化程序仅显示分钟为零的小时数?

时间:2018-03-07 12:03:01

标签: swift

我目前使用格式MM-dd-yyyy HH:mm来显示时间戳。如果时间没有任何分钟成分,是否可以减少分钟数?

比如,3:00 PM可以只显示3 PM

,而不是func formatDate(_ dateFormat: String, timeInterval: TimeInterval) -> String { let date = Date(timeIntervalSince1970: timeInterval) let formatter = DateFormatter() formatter.dateFormat = dateFormat return formatter.string(from: date) } let formattedDate = formatDate("MM-dd-yyyy HH:mm", timeInterval: 1520422200) print(formattedDate)

编辑:

   echo "<table>";
    echo "<tr>
        <th>ID</th>
        <th>Date</th>
        <th>Reference</th>
        </tr>" ;
    while ($row = $result->fetch_object())
    {
        echo "<td>" . $row->id . "</td>";
        echo "<td>" . $row->date . "</td>";
        echo "<td>" . $row->ref . "</td>";
            }
    echo "  <tr>
        <th>First Name</th>
        <th>Father Name</th>
        <th>Phone</th>
        </tr>";
    while ($row = $result->fetch_object())
    {
    echo "<td>" . $row->name . "</td>";
                    echo "<td>" . $row->fname . "</td>";
        echo "<td>" . $row->cell . "</td>";
    }
    echo "<tr>
        <th>District</th>
        <th>Address</th>
        <th>Gender</th>
        </tr>";
    while ($row = $result->fetch_object())
    {
    echo "<td>" . $row->district . "</td>";
            echo "<td>" . $row->address . "</td>";
    echo "<td>" . $row->gender . "</td>";
    }
    echo "</table>";

2 个答案:

答案 0 :(得分:2)

选项1

在返回字符串上用零分钟替换任何。

return formatter.string(from: date).replacingOccurrences(of: ":00", with: "")

选项2

确定是否有分钟,并调整日期格式。

if (Int(timeInterval) % 3600 == 0) {
    let newFormat = dateFormat.replacingOccurrences(of: ":mm", with: "")

    // ...
}

答案 1 :(得分:0)

您可以使用DateComponents来确定.minute组件是什么。如果非零,则将日期格式设置为包括分钟,否则将其设置为不包含日期。

请注意,如果这是面向用户的字符串,请使用setLocalizedDateFormatFromTemplate,几个小时使用“ j”,这样您就可以遵守用户设置是否显示24小时制。

请注意,对于大多数用户来说,看到24小时无分钟的时间可能很奇怪(例如“ 9pm”与“ 21”,后者看起来不正确,如果使用“:00”可能会更好)。