convert.todatetime指定日期格式_MATLAB的时间与日期

7  日期和时间

MATLAB在2014b版本中将日期和时间独立成了一个数据类型,新的版本中对于时间数据的处理功能更为强大。比如datetime和duration等函数,可以支持对时间的高效计算、对比、格式化显示。对这类数组的操作方法和对普通数组的操作是基本一致的。下面我们就对主要的功能进行介绍。

7.1  创建日期和时间数组

存储日期和时间信息的最主要形式就是datatime数组,它支持代数运算、排序、比较、绘图和格式化显示。代数运算的结果通过duration数组返回,如果采用基于日历的函数进行的计算,那么返回的结果将是calendarDuration数组。Matlab提供了以下函数来进行日期及时间类型的计算,请见表3-11 。

表3-11 日期和时间函数

函    数

说    明

函    数

说    明

datetime

基于当前日期创建时间数组,或者将日期字符串或数据转换为时间数组

yyyymmdd

将MATLAB datetime数据类型转化为YYYYMMDD数值格式

years

年数长度

minutes

分钟数长度

days

天数长度

seconds

秒数长度

hours

小时数长度

duration

由数值创建duration数组

calyears

日历年数长度

calweeks

日历星期数长度

calquarters

日历季度数长度

caldays

日历天数长度

calmonths

日历月数长度

calendarDuration

由数值创建日历时间长度数组

下面我们举例来说明如何创建日期和时间数组。

【例3-41】  日期时间数组创建。

例如,如果我们想要来表示这样两个日期:June 28, 2014 at 6 a.m和June 28, 2014 at 7 a.m,那么我们可以将这些数值相应的赋值给datetime函数各元素即可:

>> t = datetime(2014,6,28,6:7,0,0)

t =

   28-Jun-2014 06:00:00   28-Jun-2014 07:00:00

如果想要对数组中的某一元素进行修改,那么只需要将新的数值赋值给相应的元素即可:

>> t.Day = 27:28

t =

   27-Jun-2014 06:00:00   28-Jun-2014 07:00:00

如果想要更改数组的显示格式,只需要改变Format属性即可。这一过程中改变的只是数据显示格式,数据本身没有任何改动。

>> t.Format = 'MMM dd, yyyy'

t =

   Jun 27, 2014   Jun 28, 2014

如果你要将一个datetime数组减去另一个datetime数组,那么结果就是duration数组:

>> t2 = datetime(2014,6,29,6,30,45)

t2 =

   29-Jun-2014 06:30:45

>> d = t2 - t

d =

   48:30:45   23:30:45

在默认情况下,duration数组显示格式是“hours:minutes:seconds”。通过设置Format属性,用户可以改变显示格式。例如可以改变为单一单位“小时”,具体操作如下:

>> d.Format = 'h'

d =

   48.512 hrs   23.512 hrs

用户通过使用seconds、minutes、hours、days或 years函数,也可以直接创建一个新的单一单位的duration数值。例如,创建一个2天的天数长度,也就是正好等于24小时×2:

>> d = days(2)

d =

   2 days

用户通过使用caldays、calweeks、calquarters和calyears函数,也可以直接创建一个新的单一单位的calendar duration数值。例如,创建一个2个月的日历天数长度:

>> L = calmonths(2)

L =

   2mo

如果将一个calendar months 和一个calendar days数值相加,那么天数数值还将会分开显示,因为每个月的天数并不一致。除非是将其和一个具体的日期时间相加。

>> L = calmonths(2) + caldays(35)

L =

   2mo 35d

将一个calendar durations和一个datetime数组相加:

>> t2 = t + calmonths(2) + caldays(35)

t2 =

   Oct 01, 2014   Oct 02, 2014

此时得到的t2依然是一个datetime数组。

>> whos t2

  Name      Size            Bytes  Class       Attributes

  t2        1x2               161  datetime      

总的来说,有多种方式来表达日期和时间,MATLAB对于每一种都提供了方法(如图3-7所示):

(1)表达时间点,使用datetime数据格式。例如Wednesday, June 18, 2014 10:00:00。

(2)表达一段时间的长度,采用固定时间长度单位,使用duration数据类型。在使用此种类型的时候,1天总是等于24小时的,一年总是等于365.2425天的。例如:72 小时10分钟。

(3)表达一段时间的长度,采用可变时间长度单位,使用calendarDuration数据类型。例如1个月可以是28、29、30或者31天。另外calendarDuration还考虑了夏令时和闰年,所以1天时间可以大于或者小于24小时,1年可以是365天或者366天。

c45adb8452e342ab0845d5d63a229635.png

图3-7  选择需要导入的图像文件

【例3-42】  指定时区与相关计算。

在对日期和时间的计算中,MATLAB还提供了时区设置选项。这样我们只需在创建日期时间数组的时候指定好了时区,那么就可以在不同时区之间进行相关计算了,而不必人工换算中间有多少时差。下面我们就举例来说明如何来使用。

首先创建指定了时区的datetime数组:

>> t = datetime(2014,3,8:9,6,0,0,'TimeZone','local',...

    'Format','d-MMM-y HH:mm:ss Z')

t =

   8-Mar-2014 06:00:00 +0800   9-Mar-2014 06:00:00 +0800

在这里我们指定的是系统内部的时区设置'local',返回的结果中“+0800”一项就是我们所处的时区和Coordinated Universal Time之间的时差。

用户也可以指定时区:

>> t.TimeZone = 'Asia/Tokyo'

t =

   8-Mar-2014 07:00:00 +0900   9-Mar-2014 07:00:00 +0900

同样的方式我们可以定义另一个伦敦时间:

>> u = datetime(2014,3,9,6,0,0,'TimeZone','Europe/London',...

    'Format','d-MMM-y HH:mm:ss Z')

u =

   9-Mar-2014 06:00:00 +0000

两个时间相减,就可以得到两个时间点相差的实际时间:

>> dt = t - u

dt =

   -32:00:00    -8:00:00

【例3-43】  日期和时间序列的产生。

本例将来为读者演示如何通过使用冒号(:)来产生日期和时间序列。

采用默认步长来产生序列,默认步长为1个日历天。

>> t1 = datetime('01-Nov-2013 08:00:00');

t2 = datetime('05-Nov-2013 08:00:00');

t = t1:t2

t =

Columns 1 through 3

   01-Nov-2013 08:00:00   02-Nov-2013 08:00:00   03-Nov-2013 08:00:00

Columns 4 through 5

   04-Nov-2013 08:00:00   05-Nov-2013 08:00:00

用户还可以指定步长:

>> t = t1:caldays(2):t2      %  使用caldays函数来指定2个日历天为步长

t =

   01-Nov-2013 08:00:00   03-Nov-2013 08:00:00   05-Nov-2013 08:00:00

>>t = t1:hours(18):t2        % 使用18个小时作为步长

t =

Columns 1 through 3

   01-Nov-2013 08:00:00   02-Nov-2013 02:00:00   02-Nov-2013 20:00:00

Columns 4 through 6

   03-Nov-2013 14:00:00   04-Nov-2013 08:00:00   05-Nov-2013 02:00:00

通过指定时区为纽约时间,t1所对应时间正好在夏令时之前。

>> t1.TimeZone = 'America/New_York';

>> t2.TimeZone = 'America/New_York';

如果用户这时使用1个日历天为步长,那么这两个时间点之间每天的时间长度并不都是24小时:

>> t = t1:t2;

>> dt = diff(t)

dt =

   24:00:00   25:00:00   24:00:00   24:00:00

如果将步长设置为固定长度的1天:

>> t = t1:days(1):t2

t =

Columns 1 through 3

   01-Nov-2013 08:00:00   02-Nov-2013 08:00:00   03-Nov-2013 07:00:00

Columns 4 through 5

   04-Nov-2013 07:00:00   05-Nov-2013 07:00:00

这时我们可以验证各时间点之间的长度是否都等于24小时:

>> dt = diff(t)

dt =

   24:00:00   24:00:00   24:00:00   24:00:00

【例3-44】  日期和时间序列的计算。

日期和时间序列可以像数组那样进行加减。

首先我们创建一个日期时间点:

>> t1 = datetime('01-Nov-2013 08:00:00');

然后讲一个固定长度小时数组加到这一个时间点上:

>> t = t1 + hours(0:2)

t =

   01-Nov-2013 08:00:00   01-Nov-2013 09:00:00   01-Nov-2013 10:00:00

我们还可以加上一个日历月份时间长度:

>> t = t1 + calmonths(1:5)

t =

Columns 1 through 3

   01-Dec-2013 08:00:00   01-Jan-2014 08:00:00   01-Feb-2014 08:00:00

Columns 4 through 5

   01-Mar-2014 08:00:00   01-Apr-2014 08:00:00

上面结果中的每一个时间点都是当月的第一天。如果我们要计算数组时间点之间的相隔天数,我们可以使用以下命令:

>> dt = caldiff(t,'days')

dt =

   31d   31d   28d   31d

如果要产生一个每月最后一天的日期序列,可以通过如下方法:

>> t = datetime('31-Jan-2014') + calmonths(0:11)

t =

Columns 1 through 5

   31-Jan-2014   28-Feb-2014   31-Mar-2014   30-Apr-2014   31-May-2014

Columns 6 through 10

   30-Jun-2014   31-Jul-2014   31-Aug-2014   30-Sep-2014   31-Oct-2014

Columns 11 through 12

   30-Nov-2014   31-Dec-2014

2902a4a8d3e91482b00a604781189032.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/472966.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

跨设备链路聚合_路由与交换技术(华为设备)第五讲---链路聚合

前言:随着网络规模不断扩大,用户对骨干链路的带宽和可靠性提出了越来越高的要求。在传统技术中,常用更换高速率的接口板或更换支持高速率接口板的设备的方式来增加带宽,但这种方案需要付出高额的费用,而且不够灵活。采…

电影评论分类:二分类问题

根据电影评论的 文字内容将其划分为正面或负面。 使用IMDB 数据集,它包含来自互联网电影数据库(IMDB)的50 000 条严重两极分 化的评论。数据集被分为用于训练的25 000 条评论与用于测试的25 000 条评论,训练集和测试 集都包含50%…

TensorFlow 2.0 - tf.distribute 分布式训练

文章目录1. 单机多卡 MirroredStrategy2. 多机训练 MultiWorkerMirroredStrategy3. TPU 张量处理单元学习于:简单粗暴 TensorFlow 2 1. 单机多卡 MirroredStrategy # 分布式训练 import tensorflow as tf import tensorflow_datasets as tfds# 1 单机多卡 Mirrore…

非抢占式优先级调度算法_华为鸿蒙操作系统内核真面目之抢占式和非抢占式内核...

华为鸿蒙操作系统内核真面目之抢占式和非抢占式内核众所周知华为鸿蒙操作系统内核是Linux内核。而Linux内核即是抢占式内核也是非抢占式内核。设置软件优先级在优先级在0-99之间是抢占式优先级。设置优先级在100-139之间是非抢占式优先级。从华为官方发布的信息--优先级高的任务…

TensorFlow 2.0 - Hub 模型复用

文章目录1. tfhub2. 例子:神经风格转换3. retrain 例子学习于:简单粗暴 TensorFlow 2 1. tfhub 网址: https://hub.tensorflow.google.cn/ https://tfhub.dev/ 可以搜索,下载模型 安装包 pip install tensorflow-hub import…

微服务 注册中心的作用_102,谈谈微服务注册中心zookeeperamp;Eureka

首先,大家要明确一点微服务注册中心是一个重要的组件,解决的是服务的注册和发现的问题,而zookeeper,Eureka都只是其中一款落地实现的产品,再比如Nacos也是如此,所以关键是掌握注册中心的工作原理&#xff0…

文本表示

1 one-hot representation 该单词对应所在元素为1,向量中其他元素均为0,向量的维度就等于词库中的单词数目  所有向量都是互相正交的,我们无法有效的表示两个向量间的相似度  向量维度过大。 from sklearn.feature_extraction.text…

天池 在线编程 课程表(拓扑排序 + 回溯)

文章目录1. 题目2. 解题1. 题目 总共有n个课程,从0到n-1。 有些课程可能有先决条件,例如,你想修课程0,你必须先修一门课程1,这两门课之间的关系表示为:[0,1] 给定课程的总数和先决条件对的列表,返回你可以…

java 父子级json组装不用递归_2020面试阿里Java研发岗题库总结,想虐面试官不能错过的面试宝典...

前言:虽然天猫,蚂蚁金,菜鸟都归属阿里旗下,但每个面试官问的问题都不一样,相同点主要在流程方面。面试开始会让自我介绍,主要业务架构和技术架构两部分。业务架构一般不会深究,但要面试官听明白&#xff0c…

LeetCode 1748. 唯一元素的和

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 nums 。 数组中唯一元素是那些只出现 恰好一次 的元素。 请你返回 nums 中唯一元素的 和 。 示例 1: 输入:nums [1,2,3,2] 输出:4 解释:唯一元素为 [1,3] ,和为 4…

朵唯机器人怎么连网_平遥古城推出机器人导游 可伴游还可骑行

近日,一组集景点讲解、语音互动等多种功能于一身的机器人亮相平遥古城,引发游客关注。2月27日,北京青年报记者从景区旅游公司处了解到,这批机器人导游已经上岗5天,主要是为了填补下午5点人工导游下班后,古城…

评论数据获取、词频统计、词云图

# coding: utf-8 # In[2]: import urllib.request import re import requests import time import random import json # 设置请求头 headers (User-Agent, Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537…

pytorch 语义分割loss_vedaseg:基于pytorch的开源语义分割工具库,更多模型支持,更易拓展...

加入极市专业CV交流群,与6000来自腾讯,华为,百度,北大,清华,中科院等名企名校视觉开发者互动交流!更有机会与李开复老师等大牛群内互动!同时提供每月大咖直播分享、真实项目需求对接…

LeetCode 1749. 任意子数组和的绝对值的最大值(前缀和)

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 nums 。 一个子数组 [numsl, numsl1, ..., numsr-1, numsr] 的 和的绝对值 为 abs(numsl numsl1 ... numsr-1 numsr) 。 请你找出 nums 中 和的绝对值 最大的任意子数组(可能为空),并返…

同一个项目相互调接口_408计算机网络D3-第二章:网络体系结构与参考模型(上)分层结构-协议-接口-服务...

网络体系结构是从功能上描述计算机网络结构。计算机网络体系结构简称网络体系结构是分层结构;是计算机网络的各层及其协议的集合。每层遵循某个/些网络协议以完成本层功能。分层结构-协议-接口-服务首先就是为什么要分层发送文件前要完成的工作发起通信的计算机必须…

专家 安全_船级社专家组到公司开展安全生产标准化考核

12月17日,船级社专家组一行到公司开展安全生产标准化考核工作,公司党委书记、执行董事曲贝贝,执行总经理(主持生产经营工作)陈飞,执行总经理、安全总监李中华,党委副书记、纪委书记、工会主席刘小丽,总经济…

LeetCode 1750. 删除字符串两端相同字符后的最短长度(双指针)

文章目录1. 题目2. 解题322 / 1676, 19.2%1166 / 8426,13.8%https://leetcode-cn.com/contest/biweekly-contest-45/ranking/ 前两题: LeetCode 1748. 唯一元素的和 LeetCode 1749. 任意子数组和的绝对值的最大值(前缀和&#xf…

LeetCode 1752. 检查数组是否经排序和轮转得到

文章目录1. 题目2. 解题1. 题目 给你一个数组 nums 。 nums 的源数组中,所有元素与 nums 相同,但按非递减顺序排列。 如果 nums 能够由源数组轮转若干位置(包括 0 个位置)得到,则返回 true ;否则&#xf…

ts自动编译声明文件_拥抱 TS:细数选择 TS 的 N 种理由

作者 | 马靖day day up, bye bye bug最近在做一个新项目,技术大佬告知前端要用 TS 。前端小白的我内心疑惑“弱类型语言它不香嘛,为什么选择 TS ?” 为了紧随大佬的流星大步,拥抱变化。带着这个疑惑我积(被)极(破)主(营)动(业)点开…

java分治法求数列的最大子段和_Java十大经典排序算法动画解析和 代码实现

排序算法是《数据结构与算法》中最基本的算法之一。排序算法可以分为内部排序和外部排序。内部排序是数据记录在内存中进行排序。而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:…