2013-04-04 19 views
5

Z aplikacji na telefon iPhone, muszę wysłać datę jako parametr do metody usługi sieciowej, w której za pomocą C#, .NET i JSON zaimplementowana jest logika przetwarzania serwera.wyślij datetime z aplikacji na iPhone do usługi internetowej

W mojej aplikacji iPhone mam formatowanie daty jako:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]]; 
[dateFormatter setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'"]; 
NSString *myDateString = [dateFormatter stringFromDate:SentOn]; 

otrzymuję błąd:

There was an error deserializing the object of type DashboardDataContract.Contracts.DashboardInputParams. DateTime content '2013-04-04T12:00:00Z' does not start with '/Date(' and end with ')/' as required for JSON.'.

Próbowałem innego formatowania dat. Czy ktokolwiek mógłby mi pomóc w tym zakresie?

Odpowiedz

7

Domyślnie biblioteka JSON.Net wyemituje wszystkie dat za pomocą np formacie daty ISO "2012-05-09T00:00:00Z", ale JSON formater Microsoftu na bieżąco będzie emitować przy użyciu własnego formatu Microsoftu “/Date(xxxxxxxxxxxx)/”

Można spróbować:

unsigned long long time=(([[NSDate date] timeIntervalSince1970])*1000); 
NSString* dateTimeTosend= [NSString stringWithFormat:@"/Date(%lld)/",time]; 
+0

Bardzo ładne i proste! – user2068793

+0

Czy to działa we wszystkich strefach czasowych? – Anupdas

+0

Jeśli chcesz dodać strefę czasową, potrzebujesz formatu/daty (xxxxxxxxxxxx + rrrr)/gdzie rrrr jest strefą czasową, na przykład:/data (12345678954 + 0000) / –

0

Najbardziej skutecznym sposobem wysyłania NSDate na serwer jest uzyskanie numeru timestamp. Można w zasadzie dostać go z

NSTimeInterval timestamp = [[NSDate date] timeInvervalSince1970]; 
0

można utworzyć metodę kategorii w NSDate

- (NSString *)jsonDateString 
{ 
    NSTimeInterval seconds = [self timeIntervalSince1970]; 
    return [NSString stringWithFormat:@"/Date(%.0f+0000)/",seconds*1000]; 

} 
Powiązane problemy