iOS

时间相关类

  • NSDate - 表示一个绝对的时间点。
  • NSCalendar - 代表一个特定的日历,例如公历或者希伯来日历。它提供了一系列基于日期的计算,并且可以让你在"NSDate"和"NSDateComponents"对象之间进行转换。
  • NSDateComponents - 允许你获取一个Date的特定内容,例如小时、分钟、年月日等等。
  • NSTimeZone - 代表一个特定的时区信息,可以帮助跨时区的计算任务。

代码分析

废话少说,Show me the code

    /**
* 日历
*/
//公历
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDate *date = [NSDate new];
NSLog(@"%ld-%ld-%ld",
[calendar component:NSCalendarUnitYear fromDate:date],
[calendar component:NSCalendarUnitMonth fromDate:date],
[calendar component:NSCalendarUnitDay fromDate:date]);
// 公历:2018-5-9 //佛历
calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierBuddhist];
NSLog(@"%ld-%ld-%ld",
[calendar component:NSCalendarUnitYear fromDate:date],
[calendar component:NSCalendarUnitMonth fromDate:date],
[calendar component:NSCalendarUnitDay fromDate:date]);
// 佛历:2561-5-9 //日本日历
calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierJapanese];
NSLog(@"%ld-%ld-%ld",
[calendar component:NSCalendarUnitYear fromDate:date],
[calendar component:NSCalendarUnitMonth fromDate:date],
[calendar component:NSCalendarUnitDay fromDate:date]);
// 日本日历:30-5-9 /**
* 地区
*/
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterLongStyle];
[dateFormatter setTimeStyle:NSDateFormatterLongStyle];
NSString *formattedDateString = [dateFormatter stringFromDate:date];
NSLog(@"Default Locale Formatted Date:%@", formattedDateString);
// 系统为公历:Default Locale Formatted Date:9 May 2018 at 4:25:06 PM GMT+8
// 系统为佛历:Default Locale Formatted Date:9 May 2561 BE at 4:21:29 PM GMT+8 //中国Locale
dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"];
formattedDateString = [dateFormatter stringFromDate:date];
NSLog(@"ZH Locale Formatted Date:%@", formattedDateString);
// ZH Locale Formatted Date:2018年5月9日 GMT+8 下午4:21:29 /**
* 时区
*/
dateFormatter.timeZone = [NSTimeZone timeZoneWithName:@"GMT"];
formattedDateString = [dateFormatter stringFromDate:date];
NSLog(@"GMT Timezone Formatted Date:%@", formattedDateString);
// GMT Timezone Formatted Date:2018年5月9日 GMT 上午8:21:29 /**
* NSDateComponents
*/
// Yearless date
NSDateComponents *components = [[NSDateComponents alloc] init];
[components setMonth:11];
[components setDay:7];
NSCalendar *gregorian = [[NSCalendar alloc]
initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDate *birthday = [gregorian dateFromComponents:components];
formattedDateString = [dateFormatter stringFromDate:birthday];
NSLog(@"GMT Timezone Formatted Date:%@", formattedDateString);
// GMT Timezone Formatted Date:1年11月6日 GMT 下午3:54:17

JavaScript

关于JavaScript的Date对象可以参考以下链接:
Understanding Date and Time in JavaScript
JavaScript Date Objects

获取Date属性

const birthday = new Date(1980, 6, 31);
birthday.getFullYear(); // 1980
birthday.getMonth(); // 6
birthday.getDate(); // 31
birthday.getDay(); // 4
birthday.getHours(); // 0
birthday.getMinutes(); // 0
birthday.getSeconds(); // 0
birthday.getMilliseconds(); // 0
birthday.getTime(); // 333849600000 (for GMT)

Date格式化

var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
var today = new Date(); today.toLocaleDateString("en-US"); // 5/9/2018
today.toLocaleDateString("en-US",options); // Wednesday, May 9, 2018
today.toLocaleDateString("hi-IN", options); // बुधवार, 9 मई 2018

Moment.js

Moment.js -Parse, validate, manipulate, and display dates and times in JavaScript。Moment是一个非常强大的JavaScript时间日期库,是对原生对象的很好的扩展。

//Format
moment().format('MMMM Do YYYY, h:mm:ss a'); // May 9th 2018, 8:05:15 pm //Calendar Time
moment().add(10, 'days').calendar(); //Multiple Locale Support
moment.locale(); // en //TimeZone
var jun = moment("2014-06-01T12:00:00Z");
var dec = moment("2014-12-01T12:00:00Z"); jun.tz('America/Los_Angeles').format('ha z'); // 5am PDT
dec.tz('America/Los_Angeles').format('ha z'); // 4am PST

目前还有一个更新、更现代的时间日期库:luxon,可以尝试一下。

一篇文章吃透iOS、JS的时间日期(Date, Calendar, Locale, TimeZone)的更多相关文章

  1. 一篇文章看懂JS闭包,都要2020年了,你怎么能还不懂闭包?

     壹 ❀ 引 我觉得每一位JavaScript工作者都无法避免与闭包打交道,就算在实际开发中不使用但面试中被问及也是常态了.就我而言对于闭包的理解仅止步于一些概念,看到相关代码我知道这是个闭包,但闭包 ...

  2. js 格式化时间日期函数小结

    下面是脚本之家为大家整理的一些格式化时间日期的函数代码,需要的朋友可以参考下. 代码如下: Date.prototype.format = function(format){ var o = { &q ...

  3. 修改上一篇文章的node.js代码,支持调用自定义页面

    上一篇文章所有请求只能调用index.html,现在做个改造,允许调用自定义页面 服务端 app.js var app = require('http').createServer(handler) ...

  4. 001 -js对时间日期的排序

    001-JS对时间日期的排序 最近在做公司的项目时间,产品给了一个很简单的页面,让帮忙写一下.首先看一下产品的需求: 需要对该列表进行排序 思路:(1)可以在数据库写sql语句的时间直接一个DESC按 ...

  5. iOS - 获取当前时间日期星期几

    //获取当前时间日期星期 - (NSString *)getCurrentTimeAndWeekDay { NSArray * arrWeek=[NSArray arrayWithObjects:@& ...

  6. js实现时间日期的格式化

    前几天参加cvte的笔试,碰到了这样一道题目: //请写一个时间日期格式化的函数,具体要求如下: function format(date,"yyyy-mm-dd HH-mm-ss" ...

  7. js 格式化时间日期函数小结3

    function DateUtil(){}/***功能:格式化时间*示例:DateUtil.Format("yyyy/MM/dd","Thu Nov 9 20:30:37 ...

  8. js 获取时间 new Date()详细介绍

    javaScript系列:js中获取时间new Date()详细介绍 (2012-03-31 09:54:25) 转载▼ 标签: js时间 new date() 字符类型 转换 分类: study-j ...

  9. linux 关于时间日期date

    一.查看和修改Linux的时区 1. 查看当前时区 命令 : "date -R" 2. 修改设置Linux服务器时区 方法 A 命令 : "tzselect" ...

随机推荐

  1. php socket编程入门

    服务端 <?php /** * File name server.php * 服务器端代码 * * @author guisu.huang * @since 2012-04-11 * */ // ...

  2. 数据挖据之GeoHash核心原理解析

    引子 机机是个好动又好学的孩子,平日里就喜欢拿着手机地图点点按按来查询一些好玩的东西.某一天机机到北海公园游玩,肚肚饿了,于是乎打开手机地图,搜索北海公园附近的餐馆,并选了其中一家用餐. 饭饱之后机机 ...

  3. linux memcache 安装

    一,安装所要的软件 wget http://www.monkey.org/~provos/libevent-1.2.tar.gz #下载libevent 下面是下载memcache服务哭端memcac ...

  4. 【机器学习具体解释】KNN分类的概念、误差率及其问题

    转载请注明出处:http://blog.csdn.net/luoshixian099/article/details/50923056 勿在浮沙筑高台 KNN概念 KNN(K-Nearest Neig ...

  5. c++11小计

    [capture] (parameters) mutable -> return-type { statement } " (parameters)" 和 "-&g ...

  6. _beginthreadex创建线程,立即执行?

    一个线程创建后,并不是立马就执行,而是等时间片到来后才执行...  C++ Code  12345678910111213141516171819202122232425262728293031323 ...

  7. C# 各版本的新特性

    http://www.cnblogs.com/JeffreySun/archive/2012/11/14/2770211.html

  8. JavaScript文件操作(1)-基础

    http://www.iunbug.com/archives/2012/06/04/208.html

  9. 将BT转为磁力链接

    实战代码 安装完成后,我们来看下代码: 系统环境:Linux Python环境:Python2.7 请注意python版本 bt2url.py 1 2 3 4 5 6 7 8 9 10 11 12 1 ...

  10. JZOJ.5234【NOIP2017模拟8.7】外星人的路径

    Description 有一个外星人控制了你的大脑.一开始你处于原点(0,0).外星人有一个由(R,U,D,L)组成的长度为M 的操作序列,分别代表(右,上,下,左).平面上有N 个关键点,每当外星人 ...