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

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

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

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

6回答

20920閲覧

1ヶ月後ってどうやって計算されていますか?

KentarouOgura

総合スコア105

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

6クリップ

投稿2015/09/30 00:26

実際のプログラミングのコーディングの仕方では無く、"考え方"で悩んでいます。

今、課金のシステムを作っているのですが、
「一か月」の一か月って、何日後?というのを悩んでいます。

例えば、4月29日の一か月後は5月29日だとしても、
4月30日(月末)の一か月後は、5月30日なのか5月31日(月末)なのかとか。。。

じゃあ逆に、5月31日に一か月契約した人は、
6月30日(月末)だとすると、5月30日に契約した人は、やっぱり6月30日?
とか。。。

当然、30日後、31日後と固定してしまうと、
更新されるごとにどんどんとずれて行ってしまいます。

こういうのって、普通どうするものでしょう?

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

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

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

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

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

guest

回答6

0

まあ、基本的には「どう決めるか次第」ではあるのですが、「○ヶ月」のような単位で決めて、それ以上に特段定めのない場合は民法143条2項に従って、対応する日の前日(なければ月末)が最終日となります。

個人的な話なのですが、「1ヶ月と1日前」に発売になる、5月1日発の夜行バスのチケットを3月31日に取りに行ったら、既に売り切れていた、ということがありました。詳しく調べてみると、「乗車日の前日の1か月前」として計算するので、5月1日発なら4月30日の1か月前、3月30日発売でした。

投稿2015/09/30 01:05

編集2015/09/30 01:12
maisumakun

総合スコア145183

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

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

yuba

2015/09/30 01:34

民法143条2項、初めて知りました。勉強になりました。
KentarouOgura

2015/10/01 22:38

そんなことおあったんですね~。いろいろ勉強になります。 いろいろ協議の結果、1ヶ月=30日が採用されましたm(_ _)m
guest

0

ベストアンサー

こんにちは。
「一ヶ月」と「任意の起点」を使うという前提に立てば、
○月1日(起点)→[1ヵ月後]翌1日→[1ヵ月後]翌1日
○月31日(起点)→[1ヵ月後]翌30日→[1ヵ月後]31日
のように、日の部分を使って翌月に存在しなければ、存在するまで遡る(9月31日が無いので9月30日とする等)
課金ではないですが、私が過去に経験した月の加減算は上の規則で求めていました。

ただ、これはサービス(課金が発生する)の性格によるのではないかと思います。

サービスの利用を開始してから停止(退会?)するまで、毎月継続的に発生するなら
上記のように任意の起点日で考えていく事もできますし、
「月末」という考え方が生まれるのは「月利用」を前提として。つまり、サービスの利用開始日が1日であろうが30日であろうが、1日から月末までの料金を「月末に課金する(翌月分とかになりそうですが)」になるように思えます。(「不公平感が発生するので日割りする」かどうかは別の問題として)

そうではなく、利用者が必要なときに一定期間サービスを利用する(継続的でない)という性格のものであれば、計算方法として気にされているような日数の違い(不公平感?)が発生するので、例えば「サービス利用開始日から30日間」という考え方もできると思います。

投稿2015/09/30 01:07

編集2015/09/30 01:15
sgr-2

総合スコア294

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

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

KentarouOgura

2015/10/01 22:35

ありがとうございました!協議の結果、「1か月 = 30日」が採用されました~
guest

0

もし会社で作られているなら、「仕様を決める人間」にその特殊なケースをしっかり伝えて決済期間を決めてもらうのがベストと思います。

銀行や保険のようなお堅いシステムはわかりませんが、よくあるWebサービスは以下な感じとおもいます。1カ月契約の例で。
■日割り
・基本は毎月5日から翌月5日まで、みたいな感じで確実に存在する日付で決済期間を決める。(だから月によって日数が変わる)
・中途半端な日に契約開始した人は、その月だけは日割り計算してあげる。
(3月20日に契約した人は、4月5日までの15日間分だけの料金を請求する)

■月ぎめ
・基本は毎月5日から翌月5日まで、みたいな感じで存在する日付で期間を決める。
・半端な日で契約開始した人も、日割り計算せずにその月は全額払ってもらう。

答えになってるかな。。

投稿2015/09/30 01:08

keisukesatomi

総合スコア87

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

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

KentarouOgura

2015/10/01 22:38

フリーランスですが、お客様と協議の結果、結局のところは、1ヶ月=30日が採用されました。 いろいろとありがとうございました!
guest

0

考え方としては、1ヶ月=30日計算 を採用しているところがおおいです。
その場合勿論月末月初という考え方ではないのでずれていきます。

毎月いくらというような決め方をする場合、一般的には1日から末日までを1ヶ月とします。
開始日が中日であれば初月は日割りみたいな計算をして次の月から1日から末日で1ヶ月となるよう調整します。

1日単位の課金時間貸しの場合は日数計算、月額契約みたいな場合は初月は日割り、次月から1日か末日の月額単位が楽かとおもわれます。

まとはずれだったらもうしわけないです。

投稿2015/09/30 06:07

ashly

総合スコア119

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

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

KentarouOgura

2015/10/01 22:35

ありがとうごさいました! いろいろ協議の結果、1ヶ月=30日が採用されましたm(_ _)m
guest

0

4月30日(月末)の一か月後は、5月31日(月末)だと思います。
「一番最初の契約日が月末かどうか」がポイントになってくるんじゃないでしょうか。

最初が5月31日(月末)なら、今後も30日(月末)と31日(月末)を一ヶ月後とし、
最初が5月30日なら、すべて30日を一ヶ月後とする。
「月末とそれ以外」で計算式が変わってくる感じで。
(2月除いてます)

「課金」の定義によっても変わってくるとは思いますが…。
最初の課金日から1ヶ月おきに更新がある、ということのようなので、上記の考え方でやると思います。

投稿2015/09/30 00:51

r_ym

総合スコア79

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

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

KentarouOgura

2015/10/01 22:39

なるほど。その考え方ならシンプルでいいですね。 ただ、いろいろ協議の結果、今回は、1ヶ月=30日が採用されましたm(_ _)m
guest

0

「何日」で決まらない→日付管理概念を拡張する必要がある、
何月何日というだけのデータでなく、月末というフラグを持つようにし、
その日付は、翌月1日の前日を求める、というルールを決めるだけなのでは?
そこに、土日祝日を含めないのであれば、その分さらに前日に繰り延べるルールにするとか。

phpの場合、月末日を求めるには、
mktime(0, 0, 0, 10, 0 2015)とすることで2015/10/0つまり2015/9/30のタイムスタンプが取得できます。

投稿2015/09/30 03:42

編集2015/09/30 03:47
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

KentarouOgura

2015/10/01 22:36

なるほど! そんなやり方があるんですね~ 結果としましては、1ヶ月=30日が採用されましたm(_ _)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問