Datetime()が間違った値を返す

RadoslavIvanov

日時配列のx軸の値を使用してMATLABでプロットしようとしています
1つの値の例: '2016-06-03T13:37:20.315Z'
最初に、値は構造体配列に保存され、そこから別の配列にコピーしようとします。私は次のコードでそれを行います:

 timestamp=[];
 for j=1:length(data)
   timestamp = getfield(data,{j},'timestamp');
   timestamp{j}=(datetime);
end  

しかし、配列を見ると、すべての値が1つの日付であるように見えます。これは、「data」構造体配列にも含まれていません。
例:

timestamp{1} = '14-Dec-2018 00:31:05';  
timestamp{10} = '14-Dec-2018 00:31:05';   
timestamp{19} = '14-Dec-2018 00:31:05'; 

私の最初の考えは、おそらく入力フォーマットのせいであると思ったので、試してみました

timestamp{j}=(datetime(timestamp,'InputFormat','uuuu-MM-dd''T''HH:mmXXX','TimeZone','UTC'));  

しかし、「datetimeの使用中にエラーが発生しました(行635)「2016-06-03T13:37:20.315Z」を「uuuu-MM-ddT「HH:mmXXX」の形式を使用して日時に変換できません。」というメッセージが表示されました

何か案は?

アンジャン

コードには多数のエラーがあります。それらは以下に要約されています。

  1. 指定された構造のフィールドに格納されているデータを取得するためにループしています。一方、getfield()関数を使用するだけで、構造体の特定のフィールドに格納されているすべてのデータを直接取得できます。
  2. ループでは、datetime関数を使用してタイムスタンプ変数を設定しているだけです。その結果、datetimeが呼び出されるたびに現在の時刻が返されるため、配列には各位置に同じ値が入力されます。
  3. TimeZoneオフセットを持つdatechar配列をdatetime形式に直接変換することはできません。最初にstrrep()コマンドでオフセットを削除する必要があります。

問題の解決策

  1. getfield関数を使用して、ループを使用せずに、データ構造体からタイムスタンプchar配列に1行で完全にアクセスする必要があります。

-

  1. 最初にオフセットフィールド(TおよびZ)を日付文字配列から削除し、

-

  1. 最後に、プロットで使用する必要のある形式を使用して編集した日時文字列日時タイプに変換し直す必要があります。

手順を説明するコードを以下に示します。

% suppose we have a struct named data 
% with a field known as timestamp holding the
% different datetime char arrays of particular 
% TimeZone offsets
data.timestamp = {'2016-06-03T13:37:20.315Z', '2016-07-10T17:45:20.200Z', ...
                '2016-07-09T13:37:21.305Z', '2016-11-10T01:30:20.320Z'};

% now getting the timestamp field elements in a variable using getfield()
% command
timestamp = getfield(data, 'timestamp')

% now removing each offsets chars(T and Z) from each datetime strings
edited_timestamp = strrep(timestamp, 'T', ' '); % removing T
edited_timestamp = strrep(edited_timestamp, 'Z', '') % removing Z

% finally, convert the edited_timestamp back to datetime type using the
% required format to use in plot
timestamp_datetime = datetime(edited_timestamp, 'Format', 'yyyy-MM-dd HH:mm:ss.SSS')

% ------------------------------------------------------
% now you can do the plotting here using timestamp_datetime
% ------------------------------------------------------
% e.g., plot(timestamp_datetime, [1:4])

出力

ここに画像の説明を入力してください

ここに画像の説明を入力してください

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

DateTimeが間違った年を返す

分類Dev

dateDiffが間違った値を返す

分類Dev

GoogleAPIが間違った値を返す

分類Dev

DateTimediffが間違った値を返す

分類Dev

strcmpが間違った値を返す

分類Dev

ArrayFieldが間違った値を返す

分類Dev

AndroidListPreferenceが間違った値を返す

分類Dev

SQLCASEが間違った値を返す

分類Dev

getDateが間違った値を返す

分類Dev

SharedPreferencesが間違った値を返す

分類Dev

Python3.7 datetime.timestamp()が2分で間違った値を返す(???)

分類Dev

DateTime.TryParseが間違った(IMO)回答を返す

分類Dev

DateTime::createFromFormat() が間違った日付を返す

分類Dev

間違った値を返すOmp

分類Dev

MYSQL検索が間違った重複した値を返す

分類Dev

Sum要素が間違った値を返す配列です

分類Dev

PHPのDateTimeの違いが間違った日数を返しています

分類Dev

request.getScheme()メソッドが間違った値を返す

分類Dev

toInstant()javaが間違った値を返します

分類Dev

toInstant()javaが間違った値を返します

分類Dev

スキャナーが間違ったint値を返す

分類Dev

JavascriptString.fromCharCodeが間違った値を返す

分類Dev

Boolメソッドが間違った値を返す

分類Dev

CKContaineraccountStatusWithCompletionHandlerが間違った値を返します

分類Dev

LEN()がVBAで間違った値を返す

分類Dev

application.ymlからの@Valueが間違った値を返す

分類Dev

スポックモックが間違った値を返す

分類Dev

スイッチが間違った値を返す

分類Dev

NSLocaleがiOS11で間違った値を返す

Related 関連記事

ホットタグ

アーカイブ