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

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

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

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

761閲覧

どうにかしてjavascript側で任意の月-1を取り出したい

kuuhaku4262

総合スコア39

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2020/04/23 04:38

編集2020/04/23 05:00

前提・実現したいこと

dateの中に、以下のようにしてデータを入れました。

const cookie = Cookies.get('work_history') ? JSON.parse(Cookies.get('work_history')) : null; const date = cookie && cookie.date ? cookie.date : moment(today).format('YYYY-MM'); Cookies.set('work_history', {date: date});

どうにかして、MMだけを取り出し-1したいのですがうまくいきません。

現在のソースコード

javascript

1let abc = date; 2let start_select_ym = abc.getMonth() - 1; 3 4console.log(start_select_ym);

いろいろなメソッドを組み合わせてみましたが、どうしてもgetMonthでtypeerrerになってしまいます。

試したこと

試してみたメソッド
getMonth
substr
moument
add

補足情報(FW/ツールのバージョンなど)

date自体がどのように生成されたのかが分かりません。

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

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

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

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

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

kei344

2020/04/23 04:40

「データが入っています」ではなくどのように入れたかを具体的に書いてください。今の状態では変数dateにどのような型のオブジェクトが入っているかがわかりません。
maisumakun

2020/04/23 04:48

「cookie」はどのような変数でしょうか?
kuuhaku4262

2020/04/23 05:00

cookieについて追記しました。
guest

回答2

0

ベストアンサー

dateの中には、YYYY-MMのデータが入っています。

「日」が入っていないので、dateは日付として扱えないかと思います。
dateに入っているのはYYYY-MMの形式の文字列では?
であれば、abc.slice( -2 ) のようにすればMMが取り出せます。
※YYYY-MMで間違いないですよね? YYYY-Mならうまくいきません

次にMMを数値に変換してそこから-1するには
parseInt( abc.slice( -2 ) , 10) - 1
のようにできます。

後は、1月だった場合に-1すると0月になってしまうので、if文等で調整してみてはいかがでしょう。

投稿2020/04/23 04:50

mkk

総合スコア378

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

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

kuuhaku4262

2020/04/23 05:07

YYYY-MMで間違いないです。 let abc = parrseInt(date.slice(-2), 10) - 1; と変更してみたのですが、「jquery.min.js?1573618189:2 jQuery.Deferred exception: parrseInt is not defined ReferenceError」と「jquery.min.js?1573618189:2 Uncaught ReferenceError: parrseInt is not defined at workHistoryModel.self.updateList」がでました。
kuuhaku4262

2020/04/23 05:10

parrseIntと打ち間違えていただけでした。 問題なくほしかったデータを取得することが出来ました。 ありがとうございました。
guest

0

dateに入ってるのが文字列、月が2桁で入っていると仮定して、

JS

1let abc = date; 2let get_month = abc.slice(-2) - 0; 3if(get_month > 1){ 4 // 1月じゃなければ 5 start_select_ym = get_month - 1; 6}else{ 7 // 1月の場合は-1して12月 8 start_select_ym = 12; 9} 10console.log(start_select_ym); 11 12

投稿2020/04/23 07:52

rjunakc

総合スコア368

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

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

kuuhaku4262

2020/04/23 07:55

わざわざif文まで書いてくださりありがとうございます。 参考にさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問