创建NSDate并设置AM或PM

时间:2015-12-09 04:40:54

标签: swift nsdate nsdateformatter nscalendar nsdatecomponents

我一直试图在过去的4个小时内解决这个问题,似乎无法弄清楚如何解决这个问题。用户进入应用程序并在日历上选择日期。所选日期只是NSDate。然后,用户可以选择由hoursminutesseconds组成的时间,然后他们可以选择AMPM

因此,我们假设用户选择的时间为6:57 PM。我需要修改在日历上选择日期时创建的原始NSDate,并更改其时间数据以匹配用户刚刚设置的6:57 PM时间。

我一直在使用dateBySettingHour类的NSCalendar函数,效果很好。唯一的问题是我无法修改AM/PM值。我所能做的只是将时间,分钟和秒钟传递给它。这是代码:

calendar.dateBySettingHour(hours, minute: minutes, second: seconds, ofDate: selectedDate, options: NSCalendarOptions())

我一直在玩NSDateFormatterNSDateComponentsNSCalendar并且已经在这里进行了示例,但我似乎无法绕过这个并且搞清楚。

ISO 8601日期格式创建最终日期的最简单,最有效的方法是将正确的月,日和年信息作为原始NSDate,但现在还有正确的时间信息,包括用户选择的AM/PM设置?

我知道尝试使用dateBySettingHour是不可能的,但我现在可以尝试任何事情。

2 个答案:

答案 0 :(得分:4)

Xcode 8.3.2•Swift 3.1

    /**
 * Put image into sheet at position [row,col]
 * @param sheet
 * @param col
 * @param row
 * @param imgData
 * @throws Exception
 */
private static void putImage(Workbook wb, Sheet sheet, int col, int row, byte[] imgData) throws Exception {
    try {
        Drawing drawing = sheet.createDrawingPatriarch();
        int pictureIdx = wb.addPicture(imgData, Workbook.PICTURE_TYPE_PICT);

        CreationHelper helper = wb.getCreationHelper();
        ClientAnchor anchor4 = helper.createClientAnchor();

        //set top-left corner of the picture,
        //subsequent call of Picture#resize() will operate relative to it
        anchor4.setCol1(col);
        anchor4.setRow1(row);
        anchor4.setCol2(col+1);
        anchor4.setRow2(row+1);

        drawing.createPicture(anchor4, pictureIdx);
    } catch (Exception ex) {
        log.severe("Exception : " + Utils.exceptionToString(ex));
    }
}

答案 1 :(得分:1)

你可以通过"小时+ 12" PM?