Swift中的时间戳工具TimeStampTools

//自己封装的简单处理时间戳的工具

class TimeStampTools: NSObject {


    static func getCurrentTimeString(format:String?) -> String {
        let timeStamp = TimeStampTools.getCurrentTimeStamp()
        return TimeStampTools.timeStampToString(timeStamp: timeStamp, format: format)
    }
    
    static func getCurrentTimeStamp() -> String {
        let date = NSDate()
        let timeInterval = date.timeIntervalSince1970
        return "\(timeInterval)";
    }
    
    static func timeStampToString(timeStamp:String,format:String?)->String {
        
        let string = NSString(string: timeStamp)
        
        let timeSta:TimeInterval = string.doubleValue
        let dfmatter = DateFormatter()
        dfmatter.dateFormat = format == nil ? "yyyy年MM月dd日" : format
        let date = NSDate(timeIntervalSince1970: timeSta)
        return dfmatter.string(from: date as Date)
    }
    
    static func stringToTimeStamp(stringTime:String,format:String?)->String {
        
        let dfmatter = DateFormatter()
        dfmatter.dateFormat = format == nil ? "yyyy年MM月dd日" : format
        let date = dfmatter.date(from: stringTime)
        let dateStamp:TimeInterval = date!.timeIntervalSince1970
        let dateSt:Int = Int(dateStamp)
        return String(dateSt)
    }

}
Swift 中获取当前时间的时间戳可以通过多种方式实现,以下是几种常见且精确的方法: ### 获取秒级时间戳 使用 `Date` 类型的 `timeIntervalSince1970` 属性可以获取以秒为单位的时间戳。该属性返回的是一个 `TimeInterval` 类型(即 `Double`),表示从 1970 年 1 月 1 日至今的秒数。将其转换为整数即可获得 10 位秒级时间戳。 ```swift let seconds = Int(Date().timeIntervalSince1970) print("当前秒级时间戳是:$seconds)") ``` ### 获取毫秒级时间戳 若需要更精确的 13 位毫秒级时间戳,则可以将 `timeIntervalSince1970` 的结果乘以 1000,并通过 `round()` 函数确保数值的准确性,再转换为整数。 ```swift let milliseconds = Int(round(Date().timeIntervalSince1970 * 1000)) print("当前毫秒级时间戳是:$milliseconds)") ``` ### 使用 `DispatchTime` 获取纳秒级时间戳 如果需要更高精度的时间测量,例如用于性能分析或短期计时,可以使用 `DispatchTime.now()` 来获取当前调度时间点,并访问其 `uptimeNanoseconds` 属性以获取设备启动以来的纳秒数。 ```swift let dispatchTime = DispatchTime.now() let nanoTime = dispatchTime.uptimeNanoseconds let seconds = Double(nanoTime) / 1_000_000_000 print("当前纳秒级时间戳(转换为秒):$seconds)") ``` ### 使用扩展简化操作 为了便于复用代码,可以创建 `Date` 类型的扩展,分别定义计算属性来获取秒级和毫秒级时间戳。 ```swift extension Date { var timeStamp: String { let timeInterval = self.timeIntervalSince1970 return "\(Int(timeInterval))" } var milliStamp: String { let timeInterval = self.timeIntervalSince1970 let millisecond = Int(round(timeInterval * 1000)) return "$millisecond)" } } // 使用示例 let millisecond = Date().milliStamp print("当前毫秒级时间戳是:$millisecond)") let timeStamp = Date().timeStamp print("当前秒级时间戳是:$timeStamp)") ``` 以上方法均能有效避免直接对秒级时间戳乘以 1000 所导致的精度损失问题[^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值