有时候开发需要使用系统日期和时间,以下就是几种可以调用系统时间的办法。

如果只是单纯需要显示时间,不需要处理时间信息,那么可以很简单的使用以下代码:

Text("\(Date())")

这时候会显示非常详细的时间:

如果只是需要显示其中一部分的话可以使用以下方法:

Text(Date(), style: .date)

这时候显示如下:

这里的.date还可以改成.time来显示具体时间。当然还有timer(计时器)等组件,可以自己看看哦。
如果需要显示当前时区可以使用:

Text("\(NSTimeZone.system.description)")

当需要更详细或者特定的的时间信息时,使用以下方法:

获取非常非常详细的信息的话可以使用以下代码:

var currentDate = Calendar.current.dateComponents(in: TimeZone.current, from: Date())

先来解释一下最后括号里的内容:
首先in:后面跟的是时区,这里的.current表示使用设备当前使用的时区。from:说明从哪获得时间,这里表示使用的是当前时间。

如果这时候调用该变量会发现显示的非常复杂:

里面包含了非常非常多的信息,但是一般没人会这么使用,就需要处理一下格式。

所以当需要其他格式的时间,还有需要处理时间信息的时候,使用以下方法更好一些,就是有点复杂:

由于SwiftUI作用域的原因,swift常用的调整显示时间格式方法不能直接使用,常用的方法如下:

let formatter = DateFormatter()
//调整日期格式,一共五个选项——完整和长中短无
formatter.dateStyle = .short
//调整时间格式,同上
formatter.timeStyle = .medium
let datetime = formatter.string(from: Date())

这里不能直接复制到swiftUI中,而且,如果定义了多个方法,就算定义域没有冲突也会报错。这里使用extension扩展以下:

extension Date {func formatDate() -> String {let formatter = DateFormatter()formatter.dateStyle = .shortformatter.timeStyle = .mediumlet nowdate = formatter.string(from: Date())return nowdate}
}

这时候使用代码:

Text("\(Date().formatDate())")

就可以看到我们设计好格式的。

或者还可以这样:

//日期格式
private let Formatter: DateFormatter = {let formatter = DateFormatter()formatter.dateStyle = .shortformatter.timeStyle = .mediumreturn formatter
}()Text("\(Date(), formatter: Formatter)")

如果想很精确地修改日期时间格式,使用以下方式,推荐这种哦:

func currentDate() -> String {let formatter = DateFormatter()formatter.dateFormat = "yyyy-MM-dd' 'HH:mm:ss"let datetime = formatter.string(from: Date())return datetime
}

这里的“HH”表示24小时制,“hh”表示12小时制。
这时候返回的日期时间格式就按照我们设计好的yyyy-MM-dd' 'HH:mm:ss样式输出。需要注意的是:中间两个单引号之间有一个空格,这样输出的日期中间就是空开的,不会有其他东西。如果没有空格,两个单引号紧挨着,输出的格式会有一个单引号在中间。

可能会需要农历日期,Apple提供了方法,使用以下代码获取当前农历日期:

func lunarDate() -> String {let formatter = DateFormatter()formatter.dateStyle = .fullformatter.timeStyle = .noneformatter.locale = Locale(identifier: "zh_CN")formatter.calendar = Calendar.init(identifier: .chinese)let nowLunarDate = formatter.string(from: Date())return nowLunarDate
}

这里说明一下代码。
formatter.locale = Locale(identifier: "zh_CN")说明使用中文显示日期(不包括公历年份和时间,例如“2021辛丑年四月初八星期三”这样的格式),不设置的话会用英文显示。
formatter.calendar = Calendar.init(identifier: .chinese)表示使用中国的日历,也就是农历。formatter.dateStyle = .full也会影响农历显示格式。建议使用.long

这里显示的数字如果想去掉的话,可以使用字符串截取,参考我写的相关文章:https://blog.csdn.net/qq_33919450/article/details/117310771

SwiftUI——获取日期时间(含农历)及处理时间格式的方法相关推荐

  1. PHP获取当前时间、时间戳的各种格式写法汇总[日期时间]

    PHP获取当前时间.时间戳的各种格式写法汇总[日期时间] 原文:PHP获取当前时间.时间戳的各种格式写法汇总[日期时间] 今天写下php中,如何通过各种方法 获取当前系统时间.时间戳,并备注各种格式的 ...

  2. 直播app源代码,python 获取日期时间总结

    直播app源代码,python 获取日期时间总结 获取当前日期 import datetimetoday = datetime.date.today() 获取昨天日期 import datetime# ...

  3. 【转】PHP获取当前时间、时间戳的各种格式写法汇总[日期时间]

    今天写下php中,如何通过各种方法 获取当前系统时间.时间戳,并备注各种格式的含义,可灵活变通. 1.获取当前时间方法date() 很简单,这就是获取时间的方法,格式为:date($format, $ ...

  4. jquery 获取日期时间

    获取JavaScript 的时间使用内置的Date函数完成 var mydate = new Date(); mydate.getYear(); //获取当前年份(2位) mydate.getFull ...

  5. java获取日期/时间

    获取年月日.小时分钟秒 public class DateTimeTest {public static void main(String[] args) {Calendar cal = Calend ...

  6. android获取时区时间格式,Android关于获取日期时间知识点整理

    项目开发过程中,获取时间日期以及一些转换呢,老忘记来着,总得花时间去查找资料,于是乎,现在终于要来整理整理下这方面的知识点了,用于巩固自己的记忆! 时间戳(timestamp) 指格林威治时间1970 ...

  7. php输出时间的写法,PHP获取当前时间、时间戳的各种格式写法汇总[日期时间]

    使用strtotime可以将各种格式的时间字符串转换为时间戳 转换常规时间格式echo date('Y-m-d H:i:s', strtotime('2016-01-30 18:00')).PHP_E ...

  8. windows10 bat命令获取日期时间

    系统版本 win10 英文OS Windows Edition:Windows 10 Pro Settings-Language:English(United States) 获取日期命令 完整的日期 ...

  9. php strftime 毫秒,php strftime函数获取日期时间(switch用法)

    搜索热词 strftime()函数的用法 strftime()函数可以把YYYY-MM-DD HH:MM:SS格式的日期字符串转换成其它形式的字符串. strftime()的语法是strftime(格 ...

最新文章

  1. java 爬虫 异步_Java 爬虫遇上数据异步加载,试试这两种办法!
  2. 中表名字必须大写吗_小白也能学会的C-枯燥且必须的语法
  3. 并发编程协程(Coroutine)之Gevent
  4. C语言经典例80-猴子分桃
  5. 概率论----假设检验
  6. 36令牌环网的基本原理
  7. 层次分析法java_AHP层次分析法java实现
  8. React Native 中使用图标
  9. 三维虚拟工厂仿真交互展示有哪些功能
  10. Quartus .sof转换成.jic
  11. 学好MySQL增删查改,争取不做CURD程序员【下篇(六个小时肝MySQL万字大总结)】
  12. ffmpeg m3u8 与 mp4 相互转换
  13. BZOJ3118 : Orz the MST(对偶费用流)
  14. 第6章 IT服务运营管理
  15. 计算机网络网速,科普 | 宽带的分类及网速计算
  16. Keil5-MDK调用函数时代码自动补全功能及注意事项
  17. Python错误集锦:matplotlib legend提示:ValueError: Unrecognized location ‘upper’. Valid locations are
  18. 在线直播: 在 gTech 工作是一番怎样的体验?
  19. “迷信”或是超前科学:朱清时谈量子
  20. Ubuntu 双网卡内外网共享上网

热门文章

  1. 《当代返乡打工人图鉴》
  2. Codeforces 1179 D - Fedor Runs for President
  3. 详细介绍MySQL中的数据类型
  4. 说说Android的广播(4) - 前台广播为什么比后台广播快?
  5. App Store/Google Play开发者如何收款?中国谷歌开发者收款方式总结
  6. 英语发音规则---R字母
  7. 家电市场消费现新变化
  8. 大模型算法 几亿个参数
  9. MySQL空间拓展:SpringBoot整合Jts-GIS空间数据存储
  10. 吸金500亿后的O2O,到底该如何变现?