【问题标题】:How to remove padding of 0 while using NSdateFormatter?如何在使用 NSdateFormatter 时删除 0 的填充?
【发布时间】:2011-12-19 10:06:48
【问题描述】:

就像我使用代码一样。

 NSDateFormatter *df = [[[NSDateFormatter alloc] init] autorelease];
 [df setTimeZone:[NSTimeZone systemTimeZone]];
 [df setDateFormat:@"dd.MM.yyyy"];
 NSDate *today = [NSDate date];
 NSString *log_date = [df stringFromDate:today];

 //Generate Log Current Time.
 [df setDateFormat:@"hh:mma"];
 NSString *log_currenttime = [[df stringFromDate:today] lowercaseString];

 NSLog(@"Log Date %@",log_date);
 NSLog(@"Log Current Time %@",log_currenttime);

我的日志显示:

记录日期 19.12.2011
记录当前时间 03:18pm

至少我可以删除时间填充。

【问题讨论】:

  • 意味着您希望03:18pm 类似于3:18pm
  • 您是否尝试过单个字母,例如:[df setDateFormat:@"d.M.yyyy"];(我手边没有测试设置,所以我将其作为评论发布)。
  • 是的,我想显示下午 3:18 而不是 03:18。
  • 格式从“hh:mma”更改为“h:mma”。请看我的回答。

标签: iphone objective-c xcode cocoa-touch


【解决方案1】:

将格式从 hh:mma 更改为 h:mma

//Generate Log Current Time.
[df setDateFormat:@"h:mma"]; // Changed from hh:mma to h:mma
NSString *log_currenttime=[[df stringFromDate:today] lowercaseString];

NSLog(@"Log Current Time %@",log_currenttime);

这将输出

记录当前时间下午 3:18

【讨论】:

  • 谢谢,如果我们将日期格式设置为“h:mm”,那么它将显示内容而不填充零......是的......
  • 这有效 - 但仅适用于某些语言/日历。如果为世界各地的所有日历添加解决方案。
【解决方案2】:

正如 Eric 所写,使用 h:mm 将失败,例如在捷克日历上。

这样做的唯一方法是使用系统格式化程序。

NSDateFormatter *df = [[[NSDateFormatter alloc] init] autorelease];
 [df setTimeZone:[NSTimeZone systemTimeZone]];
 [df setDateFormat:@"dd.MM.yyyy"];
 [df setTimeStyle:NSDateFormatterNoStyle];
 NSDate *today = [NSDate date];
 NSString *log_date = [df stringFromDate:today];

 //Generate Log Current Time.
 [df setTimeStyle:NSDateFormatterShortStyle];
 [df setDateStyle:NSDateFormatterNoStyle];
 NSString *log_currenttime = [[df stringFromDate:today] lowercaseString];

 NSLog(@"Log Date %@",log_date);
 NSLog(@"Log Current Time %@",log_currenttime);

【讨论】:

  • 是的,它工作正常,但我不明白你实际上做了什么改变。
  • 我有一个基本的理解问题是,如果我们只更改一行 setTimeStyle,那么 stringFromDate 将如何给我们,只有时间,而不是包括日期的整个字符串,你懂我吗。否则工作正常。
  • @ArpitParekh 我改变了 [df setDateFormat:@"h:mma"];到 NSDateFormatters 获取时间和日期 - 它比 Format 更好,因为它使用系统日历格式 - 不是你自己的.. NSDateFormatter 有两个属性 - 日期和时间。你不会约会,所以“NoStyle”,你想要短格式的时间 - “ShortStyle”。阅读 Apple Developers 了解更多样式。
【解决方案3】:

Aadhira 回答的问题在于,如果用户随后切换到公制,@h:mma 格式将覆盖它并使23:00 看起来像11:00pm

填充来自Settings-->General-->International-->Region Format中的用户设置。例如,如果它设置为 UK,您将获得填充。如果它设置为美国,你不会。您可能希望在您的用户界面中尊重此决定。

【讨论】:

    猜你喜欢
    • 2011-07-13
    • 1970-01-01
    • 2020-07-21
    • 2017-11-20
    • 1970-01-01
    • 2021-07-15
    • 2020-12-30
    • 2021-07-30
    • 1970-01-01
    相关资源
    最近更新 更多