NSDate从数据库返回错误的日期
我有一个应用程序,用户可以订购一些项目,并通过确认订单的日期订单被保存并插入sqlite数据库。NSDate从数据库返回错误的日期
然后稍后用户可以看到订单清单和订单日期,并有一个选项,用户可以删除订单,直到他们选择的日期。
直到这部分没有问题,当我选择要显示的订单时,数据库返回的日期是正确的。
的问题,当用户想要删除基于他们在日期选择器选择日期的订单,在这一点上,我从我的订单对象获得的日期始终是正确的日期前,如发生:
按订单日期2011/12/20 14时24分23秒0000
显示用户-the订单日期是与上述相同的
-the订单日期时,我想比较日期一起2011/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;
其中为了来自SalesOrder它有一个NSDate在它出现问题,这NSDate的是在客户确认订单另一个地方设置,事情是当客户确认订单,日期这将被保存在我的SalesOrder是正确的,但是当我试图在上面的代码中分配它,它会在1天后...可能我犯了一个错误,并在这里错过了一些简单的事实,帮助。
P.S:我还在其他地方(订单列表)显示客户的日期,以及日期是否正确。
编辑:尼斯抓热点舔,我得到的值有相关订单信息,看来问题出在下面的代码,当我使用dateFromString
指定日期NSString
到NSDate
:
[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
前一天表示。我从来没有遇到过这样的事情,有什么想法? :)
我不知道你的日期格式是否覆盖了+0000在end.Try东西像[格式化setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];解析之前。
欢呼队友:)再次感谢。我会确保在以后给你+1的时候可以:) – 2011-12-23 15:31:00
发布您正在获取/创建订单对象的某些代码。 – 2011-12-20 11:50:09
我希望你不介意我已经删除了你的问题的前两行(我是新的,感谢你的帮助,我有这种情况)。如果没有这两行,在概览页面上查看问题的重要部分会更容易。欢迎来到*。 – 2011-12-20 11:52:35
尼克,我一回到家就会发布一些代码。 – 2011-12-20 12:19:06