Как добавить часы к NSDate?

Эта версия (в Дельфи) является ничем специальным, но это, по крайней мере, быстрее, чем версия Nick Hodge, отправленный на его блоге :). На моей машине требуется приблизительно 16 секунд, чтобы сделать миллиард повторений, давая значение 3.14159265 25879 (точная часть полужирным).

program calcpi;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  start, finish: TDateTime;

function CalculatePi(iterations: integer): double;
var
  numerator, denominator, i: integer;
  sum: double;
begin
  {
  PI may be approximated with this formula:
  4 * (1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 .......)
  //}
  numerator := 1;
  denominator := 1;
  sum := 0;
  for i := 1 to iterations do begin
    sum := sum + (numerator/denominator);
    denominator := denominator + 2;
    numerator := -numerator;
  end;
  Result := 4 * sum;
end;

begin
  try
    start := Now;
    WriteLn(FloatToStr(CalculatePi(StrToInt(ParamStr(1)))));
    finish := Now;
    WriteLn('Seconds:' + FormatDateTime('hh:mm:ss.zz',finish-start));
  except
    on E:Exception do
      Writeln(E.Classname, ': ', E.Message);
  end;
end.

49
задан Abdurrahman Mubeen Ali 14 April 2015 в 01:10
поделиться

2 ответа

Я не совсем уверен, что вы пытаетесь сделать, но вы можете создать объект NSDate, добавив время в секундах на другой NSDate, используя:

- (id) dateByAddingTimeInterval: (NSTimeInterval) seconds

// например. чтобы добавить 8 часов к текущему времени:

NSDate *mydate = [NSDate date];
NSTimeInterval secondsInEightHours = 8 * 60 * 60;
NSDate *dateEightHoursAhead = [mydate dateByAddingTimeInterval:secondsInEightHours];
147
ответ дан 7 November 2019 в 11:16
поделиться

Вы можете просто добавить 8 * 3600 к значению вашей базы данных ( при условии, что преобразованное двойное значение представляет секунды).

0
ответ дан 7 November 2019 в 11:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: