2011-12-20 5 views
0

사용자가 일부 항목을 주문할 수있는 응용 프로그램이 있고 주문 날짜가 저장되고 sqlite 데이터베이스에 삽입 된 주문을 확인합니다.NSDate가 데이터베이스에서 잘못된 날짜를 반환합니다.

나중에 사용자는 주문 목록과 주문 날짜를 볼 수 있으며 사용자가 선택한 날짜까지 주문을 삭제할 수있는 옵션이 있습니다.

이 부분까지는 아무런 문제가 없습니다. 표시 할 주문을 선택하면 데이터베이스에 의해 반환 된 날짜가 정확합니다. 사용자가 예를 들어, 내 순서 개체에서지고있어 날짜가 정확한 날짜 전에 항상이 시점에서, 그들은 날짜 선택에서 선택한 날짜의 기준으로 주문을 제거하고자 할 때

문제가 발생합니다

- 오더 날짜는 내가 함께 날짜를 비교할 때 사용자에게 표시 년 - 주문 날짜가
년 - 주문 날짜 상기와 같은 2011 /입니다 2011/12/20 14시 24분 23초 0000
입니다 12/19 14:24:23 +0000

아이디어가 있습니까?

편집 : 코드가 엉망이되는 경우

#import "OrderListViewController.h" 

@implementation OrderListViewController 

@synthesize newOrderTabelView, transferedOrderTableView, salesOrderArr; 
@synthesize newOrderTableViewController, transferedOrderViewController,salesOrder; 
@synthesize newOrderTableViewHeader, transferedOrderTableViewHeader, datePicker,isPickerHidden; 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     isPickerHidden=YES; 
     [self initializeTableData]; 
    } 
    return self; 
} 

- (void)dealloc 
{ 
    [newOrderTabelView release]; 
    [transferedOrderTableView release]; 
    [newOrderTableViewController release]; 
    [transferedOrderViewController release]; 
    [salesOrderArr release]; 
    [newOrderTableViewController release]; 
    [transferedOrderViewController release]; 
    [salesOrder release]; 
    [datePicker release]; 
    [super dealloc]; 
} 
- (void)didReceiveMemoryWarning 
{ 
    // Releases the view if it doesn't have a superview. 
    [super didReceiveMemoryWarning]; 

    // Release any cached data, images, etc that aren't in use. 
} 
-(void)editSaleOrderForEditButton 
{ 
    YourCartViewController *yourCartViewController=[[YourCartViewController alloc] initWithNibName:@"YourCartViewController" bundle:nil]; 
    [email protected]"Felton"; 
    [self.navigationController pushViewController:yourCartViewController animated:YES]; 
    [yourCartViewController release]; 
} 
-(IBAction)deleteOrderButton_Tapped 
{ 
    if(isPickerHidden) 
    { 
     datePicker.hidden=NO; 
     isPickerHidden=NO; 
    } 
    else if(!isPickerHidden) 
    { 
     NSDate* pickerDate = [datePicker date]; 
     datePicker.hidden=YES; 
     isPickerHidden=YES; 
     for(SalesOrder* order in salesOrderArr) 
    { 
     NSDate* orderDate = order.Date; 
     /*if([orderDate earlierDate:pickerDate]) 
     { 
      order.isDeleted = YES; 
     }*/ 
     switch([orderDate compare:pickerDate]) 
     { 
      case NSOrderedAscending: 
       order.isDeleted = YES; 
       break; 
      case NSOrderedSame: 
       order.isDeleted = YES; 
       break; 
      case NSOrderedDescending:break; 
     } 
     KDSDataSalesOrder* tSaleOrder = [[KDSDataSalesOrder alloc] init]; 
     [tSaleOrder updateSaleOrderIsDeleted:order]; 
     [tSaleOrder release]; 
    } 
    [self reloadNewOrderTable]; 
} 
} 
-(void)initializeTableData 
{ 
    KDSAppDelegate *appDelegate = [UIApplication sharedApplication].delegate; 
    KDSDataSalesOrder *dataSalesOrder=[[KDSDataSalesOrder alloc] init]; 
    NSArray* tNewSalesOrderArr=[dataSalesOrder selectSalesOrdersforSalesPerson:appDelegate.loggedInSalesPerson IsUploaded:NO IsDeleted:NO]; 
    self.salesOrderArr=tNewSalesOrderArr; 
    [dataSalesOrder release]; 
} 

#pragma mark - View lifecycle 

- (void)viewDidLoad 
{ 
    datePicker.hidden = YES; 
    [super viewDidLoad]; 
    if(newOrderTableViewController == nil) 
    { 
     NewOrderTableViewController *tNewOrderTableViewController = [[NewOrderTableViewController alloc] init]; 
    self.newOrderTableViewController = tNewOrderTableViewController; 
    self.newOrderTableViewController.orderListViewController=self; 
    [tNewOrderTableViewController release]; 
} 
if(transferedOrderViewController == nil) 
{ 
    TransferedOrderTableViewController *tTransferedOrderTableViewController = [[TransferedOrderTableViewController alloc] init]; 
    self.transferedOrderViewController = tTransferedOrderTableViewController; 
    [tTransferedOrderTableViewController release]; 
} 

[newOrderTabelView setDataSource:self.newOrderTableViewController]; 
[newOrderTabelView setDelegate:self.newOrderTableViewController]; 

[transferedOrderTableView setDataSource:self.transferedOrderViewController]; 
[transferedOrderTableView setDelegate:self.transferedOrderViewController]; 

self.newOrderTableViewController.view = self.newOrderTableViewController.tableView; 
self.transferedOrderViewController.view = self.transferedOrderViewController.tableView; 

UIView *NewOrdeertableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(newOrderTabelView.frame.origin.x, newOrderTabelView.frame.origin.y-30, self.newOrderTabelView.frame.size.width, 30)]; 
NewOrdeertableHeaderView.backgroundColor = [UIColor colorWithRed:0.0196 green:0.513 blue:0.949 alpha:1.0]; 

UILabel *NewOrderTableHeaderLabel = [[UILabel alloc] initWithFrame:CGRectMake(5, 5, self.newOrderTabelView.frame.size.width/2, 21)]; 
NewOrderTableHeaderLabel.text = @"New Order"; 
NewOrderTableHeaderLabel.backgroundColor = [UIColor clearColor]; 
NewOrderTableHeaderLabel.textColor = [UIColor whiteColor]; 
NewOrderTableHeaderLabel.textAlignment = UITextAlignmentLeft; 
[NewOrdeertableHeaderView addSubview:NewOrderTableHeaderLabel]; 
newOrderTableViewHeader = NewOrdeertableHeaderView; 
[self.view addSubview:newOrderTableViewHeader]; 

UIView *TransferedOrdertableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(transferedOrderTableView.frame.origin.x, transferedOrderTableView.frame.origin.y-30, self.transferedOrderTableView.frame.size.width, 30)]; 
TransferedOrdertableHeaderView.backgroundColor = [UIColor colorWithRed:0.0196 green:0.513 blue:0.949 alpha:1.0]; 

UILabel *TransferedOrderTableHeaderLabel = [[UILabel alloc] initWithFrame:CGRectMake(5, 5, self.transferedOrderTableView.frame.size.width/2, 21)]; 
TransferedOrderTableHeaderLabel.text = @"Transfered Order"; 
TransferedOrderTableHeaderLabel.backgroundColor = [UIColor clearColor]; 
TransferedOrderTableHeaderLabel.textColor = [UIColor whiteColor]; 
TransferedOrderTableHeaderLabel.textAlignment = UITextAlignmentLeft; 
[TransferedOrdertableHeaderView addSubview:TransferedOrderTableHeaderLabel]; 
transferedOrderTableViewHeader = TransferedOrdertableHeaderView; 
[self.view addSubview:transferedOrderTableViewHeader]; 

[NewOrdeertableHeaderView release]; 
[NewOrderTableHeaderLabel release]; 
[TransferedOrdertableHeaderView release]; 
[TransferedOrderTableHeaderLabel release]; } 
-(void)viewDidUnload 
    { 
     [super viewDidUnload]; 
     // Release any retained subviews of the main view. 
     // e.g. self.myOutlet = nil; 
    } 

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    // Return YES for supported orientations 
    return YES; 
} 
-(void)reloadNewOrderTable 
{ 
    [self initializeTableData]; 
    [self.newOrderTableViewController initializeTableData]; 
    [newOrderTabelView reloadData]; 
} 
@end 

죄송합니다. 고객이 주문을 확인하면 문제가

NSDate* orderDate = order.Date; 
순서가에있는 NSDate을 가지고 SalesOrder를에서 오는

에서 발생이있는 NSDate는 고객이 주문을 확인 다른 장소에 설정되어 것은, 날짜입니다 내 SalesOrder에 저장 될 정확한 내용입니다. 위의 코드에서 할당하려고하면 1 일 전으로 되돌아갑니다 ... 아마도 실수를하고있어 간단한 사실을 놓치고있을 것입니다. 미리 감사드립니다. 도움.

P.S : 나는 다른 곳 (주문 목록)에서 고객에게 oder 날짜를 보여주고 있으며 그 날짜가 정확합니다.


편집 : 니스 캐치 핫 핥는, 내가 갖는 값이 순서에 관한 정보가 있습니다, 내가 dateFromString를 사용 NSDate에 날짜 NSString를 할당있을 때 문제가 코드 아래에 나타납니다 :

[NSDateFormatter *formatter=[[NSDateFormatter alloc] init];  
[formatter setDateFormat:@"YYYY/MM/dd hh:mm:ss"];     
NSString *orderDateStr=[NSString stringWithUTF8String:(char*)sqlite3_column_text(statement, 2)];  
NSDate *orderDate=[formatter dateFromString:orderDateStr]; 

orderDateStr 순서의 정확한 날짜를 보여 주지만, orderDate는 전날 보여줍니다. 전에 그런 건 본 적이 없어요, 어떤 생각? :)

+1

주문 오브젝트를 가져 오거나 생성하는 곳의 코드를 게시하십시오. –

+2

귀하의 질문에 처음 두 줄을 지우지 않았 으면 좋겠어요. (저는 새로 도와 줘서 고맙습니다.) 이 두 줄이 없으면 개요 페이지에서 질문의 중요한 부분을보다 쉽게 ​​볼 수 있습니다. stackoverflow에 오신 것을 환영합니다. –

+0

Nick, 집에 도착하자마자 코드를 게시 해 드리겠습니다. –

답변

0

날짜 형식이 끝에 +0000을 포함하는지 궁금합니다. [formatter setTimeZone : [NSTimeZone timeZoneForSecondsFromGMT : 0]]; 파싱하기 전에.

+0

다시 한번 감사드립니다. 내가 할 수있을 때 나중에 +1 할 것입니다. :) –

관련 문제