2010-06-04 8 views
6

У меня есть формат 2:01:20 в одном ярлыке; после некоторых вычислений мне нужно изменить час и/или минуту этого ярлыка.Как установить часовую минуту в nsdate программно?

То есть, возможно ли изменить это значение метки, преобразовывая его как объект NSDate и изменяя час и минуту, как 3:20:30 PM?

Существуют ли какие-либо способы настройки для этого?

+0

, если я использую [string1 replaceCharactersInRange: NSMakeRange (0,5) withString: [ NSString stringWithFormat: @ "% d: 0% d", hour, finalMinute] Мне нужно проверить много условий, если минута меньше 10 присоединяемых строк как 01,02,03 .... и если час больше чем 9 мне нужно изменить диапазон, из-за 12:03:23 PM ..... – mac

ответ

1

Если вам нужно рассчитать конкретные реальные экземпляры во времени, например. 3:20:30 PM 23 октября 2010 года, тогда вы хотите использовать NSCalendar, который позволяет вам разлагать даты и выполнять вычисления, связанные с датой.

Слово предупреждения. Расчеты даты и времени на удивление сложны и детализированы. Ожидайте потратить пару часов на изучение API.

+0

мой код: NSDateFormatter * timeFormatter = [[[NSDateFormatter alloc] init] autorelease]; \t [timeFormatter setDateStyle: NSDateFormatterNoStyle]; \t [timeFormatter setTimeStyle: NSDateFormatterMediumStyle]; \t NSDate * stringTime = [NSDate date]; \t NSString * formattedDateStringTime = [timeFormatter stringFromDate: stringTime]; \t \t // NSLog (@ "строка времени% @", formattedDateStringTime); \t \t time.text = formattedDateStringTime; здесь, моя проблема в том, что мне нужно изменить часовой пояс, минуту, так что, если я последую за комментарием слишком сильно, любые другие классы, чтобы упростить работу с TechZen. Спасибо за быстрый ответ. – mac

25

Ответ на первый вопрос "? как установить часовой минуту в NSDate" программно следующая:

NSDate* result; 
    NSDateComponents *comps = [[NSDateComponents alloc] init]; 
    [comps setMinute:0]; 
    [comps setHour:0]; 
    NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
    result = [gregorian dateFromComponents:comps]; 
    [comps release]; 
+0

Он выбирает дату как «0001-01-01». Как установить текущую дату? – Satyam

+1

Вот как вы можете установить текущую дату в компонентах: 'NSDateComponents * components = [компоненты календаря: NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate: [NSDate date]]; ' – iBug