質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

6240閲覧

《Python》APIから取得した文字列を時間に変換したいです

coca0127

総合スコア10

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2020/03/01 10:16

編集2020/03/01 10:36

import requests
import json
import datetime as dt

today = dt.datetime.now()
postday = today.strftime('%Y-%m-%d %H:%M:%S')

apiurl = "APIのURL"
apireq = requests.get(apiurl)
apidata = json.loads(apireq.text)
apiday = apidata['pages'][0]['create_date_date']
reuseday = dt.strftime(apiday, '%Y/%m/%d %H:%M:%S')

apidayはAPIから取得した時間です(出力結果:2020/03/01 19:01:17)
postdayとreusedayの差分を計算したいのですが、取得した文字列をdatetimeに変換しようとすると
AttributeError: 'str' object has no attribute 'strftime'
というエラーが出ます。

https://stackoverflow.com/questions/19887353/attributeerror-str-object-has-no-attribute-strftime
こちらのURLと近い問題な気がするのですがどのように直せばいいか分かりません・・・。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ちょっとした間違いです。

2点ほど

(1)
srtftime() method があるのは、datetime モジュール内の datetime クラスです。

ですので、

Python

1import datetime as dt

のように書きますと、dtdatetimeモジュールを指しますので dt.strftime()ではなくdt.datetime.strftime()のように呼び出す必要があります。


[補足]
ちなみにリンク先では

Python

1from datetime import datetime

となっておりますので、datetimeはクラス側を指します。


(2)
datetime→文字列変換:strftime()
文字列→datetime変換:strptime()
です。
今回の場合は後者なので、使うのはstrptime()ですね。

以上、こんな感じになります。

Python

1import datetime as dt 2 3apiday = '2020-03-01 19:01:17' 4 5reuseday = dt.datetime.strptime(apiday, '%Y-%m-%d %H:%M:%S') 6print(reuseday) 7#> 2020-03-01 19:01:17 8print(type(reuseday)) 9#<class 'datetime.datetime'>

投稿2020/03/01 10:45

編集2020/03/01 10:54
magichan

総合スコア15898

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

coca0127

2020/03/01 11:03

ありがとうございます! postdayを逆に文字列にしていたため、datetimeに揃えて無事計算できました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問