一篇文章吃透iOS、JS的時間日期(Date, Calendar, Locale, TimeZone)

來源:互聯網
上載者:User

標籤:dig   display   允許   settime   comment   tip   word   format   希伯來   

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();      // 1980birthday.getMonth();         // 6birthday.getDate();          // 31birthday.getDay();           // 4birthday.getHours();         // 0birthday.getMinutes();       // 0birthday.getSeconds();       // 0birthday.getMilliseconds();  // 0birthday.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/2018today.toLocaleDateString("en-US",options);  // Wednesday, May 9, 2018today.toLocaleDateString("hi-IN", options);  // ??????, 9 ?? 2018
Moment.js

Moment.js -Parse, validate, manipulate, and display dates and times in JavaScript。Moment是一個非常強大的JavaScript時間日期庫,是對原生對象的很好的擴充。

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

目前還有一個更新、更現代的時間日期庫:luxon,可以嘗試一下。

一篇文章吃透iOS、JS的時間日期(Date, Calendar, Locale, TimeZone)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.