日期 时间 date calendar localdate

Posted duanmy0687

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了日期 时间 date calendar localdate相关的知识,希望对你有一定的参考价值。

文章目录

一、 JDK8 之前

1. System类的currentTimeMillis()

2. 两个Date类

java.util.Date

  • 构造器:
    – Date():使用无参构造器创建的对象可以获取本地当前时间。
    – Date(long 毫秒数):把该毫秒值换算成日期时间对象
  • 常用方法
    – getTime(): 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象
    表示的毫秒数。
    – toString(): 把此 Date 对象转换为以下形式的 String: dow mon dd
    hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed,
    Thu, Fri, Sat),zzz 是时间标准。
    – 其它方法都过时了。

java.sql.Date

  1. SimpleDateFormat 类

  2. Calendar类(日历类):抽象

二、JDK8

  1. 本地日期时间:LocalDate、LocalTime、LocalDateTime

  2. 瞬时:Instant

  3. DateTimeFormatter

一篇文章吃透iOSJS的时间日期(Date, Calendar, Locale, TimeZone)

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,可以尝试一下。



以上是关于日期 时间 date calendar localdate的主要内容,如果未能解决你的问题,请参考以下文章

Java学习笔记4.5.1 日期时间 - Date类与Calendar类

不推荐使用Date日期和Calendar日期

日期 时间 date calendar localdate

日期时间--import--time-date--datetime--calendar

Calendar日期类详解SimpleDateFormat时区Date夏令时常用方法,日期差获取当前时间

时间日期相关类:Date类,DateFormat类&SimpleDateFormat类,Calendar类