`
jsntghf
  • 浏览: 2528643 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

自定义时间格式

    博客分类:
  • iOS
阅读更多

PSDateFormatter.h

 

#import <Foundation/Foundation.h>

@interface PSDateFormatter : NSObject {
    NSDateFormatter *todayFT;
    NSDateFormatter *thisWeekFT;
    NSDateFormatter *aWeekAgoFT;
}

- (NSString *) getDateDesSinceNow:(NSDate *) date;

+ (id) getInstance;

@end

 

PSDateFormatter.m

 

#import "PSDateFormatter.h"

static PSDateFormatter *instance = nil;

@implementation PSDateFormatter

- (id) init {
    todayFT = [[NSDateFormatter alloc] init];
    [todayFT setDateFormat:@"a h:mm"];
    thisWeekFT = [[NSDateFormatter alloc] init];
    [thisWeekFT setDateFormat:@"EEE"];
    aWeekAgoFT = [[NSDateFormatter alloc] init];
    [aWeekAgoFT setDateFormat:@"yy-M-d"];
    
    return self;
}

+ (id) getInstance {
    if (instance == nil) {
        instance = [[PSDateFormatter alloc] init];
    }
    return instance;
}

- (NSString *) getDateDesSinceNow:(NSDate *) date {
    NSDate *now = [NSDate date];
    NSCalendar *cal = [NSCalendar currentCalendar];
    [cal setTimeZone:[NSTimeZone localTimeZone]];
    NSDateComponents *begin = [cal components:NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit| NSSecondCalendarUnit fromDate:now];
    [begin setHour:0];
    [begin setMinute:0];
    [begin setSecond:0];
    NSDate *dayBegin = [cal dateFromComponents:begin];
    
    NSTimeInterval space = [now timeIntervalSinceDate:dayBegin];
    
    NSTimeInterval spDate = -[date timeIntervalSinceNow];
    
    NSString *str;
    if (spDate < space) {
        str = [todayFT stringFromDate:date];
    } else {
        spDate -= space;
        NSTimeInterval oneDay = 86400;
        if (spDate <= oneDay) {
            str = @"昨天";
        } else if (spDate > oneDay && spDate < 6 * oneDay) {
            str = [thisWeekFT stringFromDate:date];
        } else {
            str = [aWeekAgoFT stringFromDate:date];
        }
    }
    
    return str;
}

@end
分享到:
评论

相关推荐

    WPF下自定义时间格式

    ### WPF 下自定义时间格式 在 Windows Presentation Foundation (WPF) 开发中,自定义时间格式是一项常用且重要的功能。这使得开发者可以根据具体需求来调整日期和时间的展示方式,比如只显示“年月日”、“年月”...

    自定义时间格式转换代码分享

    自定义时间格式转换是指根据特定的格式要求将日期和时间字符串转换为日期时间对象,以便进行进一步的计算、比较或显示。本篇文章将深入探讨如何实现自定义时间格式转换,特别是针对“2012年5月14日”这种格式的日期...

    自定义事件选择器

    - **格式化输出**:支持自定义时间格式,如HH:mm、hh:mm A等,并能根据用户的选择自动转换。 **2. 实现自定义时间选择器** - **JavaScript库**:可以使用jQuery、React、Vue、Angular等库来构建自定义组件。例如,...

    Android Mars Xlog 支持自定义格式存储.zip

    4. **日期格式**:定制日期时间的表示方式,以便于快速识别和排序日志。 5. **过滤和裁剪策略**:根据日志的重要性,设置过滤条件,避免不必要的日志占用过多存储空间。 6. **压缩机制**:为了节省存储,可以对...

    csharp代码 自定义简单的时间空间的程序

    对于自定义时间格式,C#提供了`DateTime.ToString(string format)`方法,允许你按照特定格式输出日期时间,例如`"yyyy-MM-dd HH:mm:ss"`。同时,`DateTime.TryParse`和`DateTime.TryParseExact`用于字符串到DateTime...

    C#自定义时间控件

    4. **格式化时间**:根据需求,我们可能需要将时间格式化为小时、分钟和秒的组合。`DateTime`对象提供了多种格式化选项,如`ToString("hh:mm:ss")`,可以生成如"15:30:45"这样的字符串。 5. **处理用户交互**:虽然...

    自定义时间选择器

    在Android开发中,自定义时间选择器是一种常见的需求,它允许用户通过滚动界面来选择日期或时间,提供了比系统默认日期选择器更为灵活的交互体验。本教程将深入探讨如何创建一个自定义的时间选择器,重点是使用`...

    android 自定义时间选择器 滑动选取

    创建一个新的Java类,继承自`View`或`FrameLayout`,这将成为我们的自定义时间选择器的基础。在这个类中,我们将定义用于显示和滑动选择的各个组件,如年、月、日、时、分的滚动条。 2. **布局设计**: 在XML布局...

    AAA.rar_cupbpi_时间格式

    在处理这种自定义时间格式时,理解其结构和背后的逻辑是非常重要的。这有助于在编程时正确地解析、格式化和比较日期时间值,避免潜在的错误和混淆。在实际开发中,我们通常会建议使用标准的时间格式,因为它们更易于...

    golang格式化时间的两种方案

    我们将会分析`time.Now()`函数的用法以及如何自定义时间格式。 首先,让我们来了解`time.Now()`函数。在Golang的标准库`time`包中,`Now()`函数是一个非常基础且重要的方法,它返回当前的本地时间。这个函数的使用...

    vue将时间戳转换成自定义时间格式的方法

    通过这种方式,Vue可以将时间戳转换为任何你想要的自定义日期和时间格式,提高了代码的可读性和用户体验。这种方法不仅适用于Vue,也可以应用于其他JavaScript项目,因为它的核心是纯JavaScript函数。

    excel自定义格式学习资料大全.rar

    2. **日期和时间格式**:自定义日期格式可以精确到年、月、日、小时、分钟和秒。例如,“yyyy-mm-dd”显示四位年份、两个月份和一天的日期格式。“h:mm:ss”则表示24小时制的时间格式。 3. **百分比和小数格式**:...

    第3个:自定义数字格式

    2. 日期/时间格式:可以自定义日期和时间的显示样式,如“mm/dd/yyyy”或“hh:mm:ss”。 3. 百分比格式:将数值转换为百分比形式,并可以控制小数位数。 4. 科学记数法:将大数值以科学记数法呈现,如“1.23E+05”。...

    Django中日期处理注意事项与自定义时间格式转换详解

    另外,如果不习惯Django的默认时间格式,也可以自定义的修改。 DateTimeField、DateField和TimeField,其值分别对应着Python里的datetime.datetime、datetime.date和datetime.time三个实例,这三个Field里都有两个...

    ios-自定义时间选择器.zip

    在给定的“ios-自定义时间选择器.zip”压缩包中,很可能包含了一个自定义的时间选择器实现,用于提供更灵活的UI样式或功能扩展。以下是对这个自定义时间选择器的详细解读。 1. **UIPickerView**:在iOS中,标准的...

    android 自定义时间日期选择器

    "android 自定义时间日期选择器"是一个专门为Android平台设计的自定义组件,它允许用户以一种新颖的方式选择日期和时间,提供了不同于系统默认的日期时间选择器的交互体验。这个控件的源码已经提供,并且经过验证...

    自定义时间控件

    5. **属性和事件**:为了让其他开发者能轻松地使用这个自定义控件,我们需要暴露一些关键属性(如时间格式、颜色、日期范围等)和事件(如值改变事件),以便在使用时进行配置。 6. **测试和调试**:确保在各种情况...

    1)自定义数字格式规则及其经典用法1105共12页.pdf

    4. **特殊格式**:例如,日期和时间格式可以通过特定的组合来实现,如“mm/dd/yyyy”或“h:mm:ss AM/PM”。 5. **隐藏值处理**:通过自定义格式,可以控制如何显示负值、零值或者空值。比如,设置为“;;”可以使...

    自定义格式的研究

    - "h:mm:ss":小时:分钟:秒的时间格式。 - "mm:ss.0":分钟:秒,精确到毫秒的格式。 3. 文本格式: - "@":表示文本模式,无论数字还是文本都将按原样显示。 4. 条件格式: - 使用"&"和"["结合颜色设定条件...

    vue.js将unix时间戳转换为自定义时间格式

    在Vue.js中,时间戳转换通常涉及到自定义过滤器(filter),以便将Unix时间戳转换为用户友好的日期和时间格式。Unix时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不包括闰秒。在JavaScript中,我们...

Global site tag (gtag.js) - Google Analytics