日付 (nsdate) をティック値に変換したかったのです。ティック値は、0001 年 1 月 1 日 00:00:00 GMT からの (1 ティック = 0.1 マイクロ秒または 0.0001 ミリ秒) です。NSDate には timeIntervalSince1970 のような関数があります。では、どのように変換すればよいでしょうか。
2566 次
1 に答える
3
私の経験を共有したいと思います:
01/01/0001 からの秒数を見つけて、10,000,000 を掛けてみました。しかし、それは私に間違った結果をもたらしました。したがって、1970/01/01 は 0001/01/01 から 621355968000000000 ティックであることがわかり、NSDate の timeIntervalSince1970 関数と共に次の式を使用しました。
ティック = (ミリ秒 * 10000) + 621355968000000000
ミリ秒 = (ティック - 621355968000000000) / 10000
結果は次のとおりです。
+(NSString *) dateToTicks:(NSDate *) date
{
NSString *conversionDateStr = [self dateToYYYYMMDDString:date];
NSDate *conversionDate = [self stringYYYYMMDDToDate:conversionDateStr];
NSLog(@"%@",[date description]);
NSLog(@"%@",[conversionDate description]);
double tickFactor = 10000000;
double timeSince1970 = [conversionDate timeIntervalSince1970];
double doubleValue = (timeSince1970 * tickFactor ) + 621355968000000000;
NSNumberFormatter *numberFormatter = [[[NSNumberFormatter alloc] init] autorelease];
[numberFormatter setNumberStyle:NSNumberFormatterNoStyle];
NSNumber *nsNumber = [NSNumber numberWithDouble:doubleValue];
return [numberFormatter stringFromNumber:nsNumber];
}
同様に、ティックから日付に変換するには:
//MilliSeconds = (Ticks - 621355968000000000) / 10000
+(NSDate *) ticksToDate:(NSString *) ticks
{
double tickFactor = 10000000;
double ticksDoubleValue = [ticks doubleValue];
double seconds = ((ticksDoubleValue - 621355968000000000)/ tickFactor);
NSDate *returnDate = [NSDate dateWithTimeIntervalSince1970:seconds];
NSLog(@"%@",[returnDate description]);
return returnDate;
}
于 2012-09-13T16:33:31.000 に答える