売上IDをミリ秒を用いて表示させたい。
- 評価
- クリップ 0
- VIEW 1,002
1970年1月1日0時0分からのUNIX時間で取得するプログラムを作成したいです。
java.time.Duration クラスを使うと便利というのを調べていたら見つけたので、それを用いながらコードを作成しましたが表示されませんでした。どのようにすれば表示されるのでしょう。。。
よろしくお願いします。
該当のソースコード
SalesSystemController.java
@Controller
@RequestMapping(value = "/system")
public class SalesSystemController {
private static final Logger logger = LoggerFactory.getLogger(SalesSystemController.class);
/** Stringの定数として次の6つを定義する*/
private static final String INIT = "init";
private static final String ADD = "add";
private static final String FIX = "fix";
private static final String ERRMSG = "1以上の数字を入力してください。";
private static final String ADDMSG = "明細に追加しました。";
private static final String FIXMSG = "以下のように売上登録しました。";
private static final String DELETE = "選択された明細行を削除しました。";
// private static final String REMOVE = "明細行を選択してください。";
/** 初期画面を呼び出す処理*/
@RequestMapping(value = "/start")
public String init(SalesForm form, Model model) {
/** RecordManagerにItemListを格納する*/
model.addAttribute("ItemList", RecordManager.getItemList());
/** RecordManagerにNameListを作成する*/
model.addAttribute("nameList", RecordManager.makeNameList());
return INIT;
}
/** 初期画面での明細追加押下時の処理*/
@RequestMapping(params = "add", method = RequestMethod.POST)
public String add(@Valid @ModelAttribute("salesForm") SalesForm form, BindingResult result, Model model) {
logger.info("Post : " + form.getQuantity());
/** 1の数字以外または未入力のときエラーとして処理*/
if (result.hasErrors()) {
/** RecordManagerにNameListを作成する*/
model.addAttribute("nameList", RecordManager.makeNameList());
/** エラーメッセージの表示*/
model.addAttribute("message1", ERRMSG);
/** 初期画面へ*/
return INIT;
}
/** 1以上のとき正常処理*/
else {
/** RecordManagerのselectItemにidとquantityを格納*/
model.addAttribute("allList", RecordManager.selectItem(form.getId(),form.getQuantity()));
/** RecordManagerにNameListを作成する*/
model.addAttribute("nameList", RecordManager.makeNameList());
/** QuantityにaddDataを格納*/
model.addAttribute("addData", form.getQuantity());
/**明細追加完了のメッセージを表示*/
model.addAttribute("message2", ADDMSG);
/** 売上に合計金額を表示*/
model.addAttribute("total", RecordManager.getTotal());
/** 明細追加画面へ*/
return ADD;
}
}
/** 明細追加画面での明細追加押下時の処理*/
@RequestMapping(params = "addition", method = RequestMethod.POST)
public String additon(@Valid @ModelAttribute("salesForm") SalesForm form, BindingResult result, Model model) {
if (result.hasErrors()) {
/** RecordManagerのselectItemにidとquantityを格納*/
model.addAttribute("allList", RecordManager.selectItem(form.getId(),form.getQuantity()));
/** RecordManagerにNameListを作成する*/
model.addAttribute("nameList", RecordManager.makeNameList());
/** QuantityにaddDataを格納*/
model.addAttribute("addData", form.getQuantity());
/** エラーメッセージの表示*/
model.addAttribute("message1", ERRMSG);
}else {
/** RecordManagerのselectItemにidとquantityを格納*/
model.addAttribute("allList", RecordManager.selectItem(form.getId(),form.getQuantity()));
/** RecordManagerにNameListを作成する*/
model.addAttribute("nameList", RecordManager.makeNameList());
/** QuantityにaddDataを格納*/
model.addAttribute("addData", form.getQuantity());
/** 売上に合計金額を表示*/
model.addAttribute("total",RecordManager.getTotal());
/**明細追加完了のメッセージを表示*/
model.addAttribute("message2", ADDMSG);
}
return ADD;
}
/** 明細追加画面での削除押下時の処理*/
@RequestMapping(params = "remove")
public String remove(SalesForm form, Model model) {
/** RecordManagerのselectItemにidとquantityを格納*/
model.addAttribute("allList", RecordManager.selectItem(form.getId(),form.getQuantity()));
/** RecordManagerにNameListを作成する*/
model.addAttribute("nameList", RecordManager.makeNameList());
/** QuantityにaddDataを格納*/
model.addAttribute("addData", form.getQuantity());
/** 削除完了メッセージの表示*/
model.addAttribute("message4", DELETE);
model.addAttribute("message5", REMOVE);
/** 明細追加画面へ*/
return ADD;
}
/** 明細追加画面での確定押下時の処理*/
@RequestMapping(params = "firm")
public String firm( SalesForm form, Model model) {
/** RecordManagerのselectItemにnameを格納*/
model.addAttribute("allList", RecordManager.selectItem(form.getId(),form.getQuantity()));
/** 売上登録完了のメッセージを表示*/
model.addAttribute("message3", FIXMSG);
/** 売上に合計金額を表示*/
model.addAttribute("total",RecordManager. getTotal());
/** 売上登録画面へ*/
return FIX;
}
/** 売上登録画面での終了押下時の処理*/
@RequestMapping(params = "end")
public String end( SalesForm form, Model model) {
/** RecordManagerにItemListを格納す**/
model.addAttribute("ItemList", RecordManager.getItemList());
/** RecordManagerにNameListを作成する*/
model.addAttribute("nameList", RecordManager.makeNameList());
/**初期画面へ*/
return INIT;
}
}
RecordManager.java
public final class RecordManager {
/** 商品データ */
private static List<Item> list = new ArrayList<>();
private static List<Item> selectList = new ArrayList<>();
private static Item item;
/** totalを定義 */
private static int total = 0;
static {
list.add(new Item("A00101", "油性ボールペン", 60, 0, 0));
list.add(new Item("A00201", "極細ボールペン", 120, 0, 0));
list.add(new Item("A00301", "蛍光ペン6色セット", 420, 0, 0));
list.add(new Item("A00401", "シャープペンシル", 100, 0, 0));
list.add(new Item("A00501", "鉛筆H(1ダース)", 400, 0, 0));
}
/** 商品名 */
public static List<Item> selectItem(String id, int quantity) {
for (int i = 0; i < list.size(); i++) {
if (id.equals(list.get(i).getId())) {
/** Itemを再定義 */
Item item = new Item(id, list.get(i).getName(), list.get(i).getPrice(), quantity,
quantity * list.get(i).getPrice());
selectList.add(item);
/** xを定義 */
int x = quantity * list.get(i).getPrice();
total = total + x;
break;
}
}
return selectList;
}
/** nameListの作成 */
public static String[] makeNameList() {
String[] nameList = new String[list.size()];
for (int i = 0; i < list.size(); i++) {
nameList[i] = (list.get(i)).getName();
}
return nameList;
}
/** itemList取得 */
public static List<Item> getItemList() {
return list;
}
/** itemLista設定 */
public static void setItemList() {
/** 設定した[item」をlist内で検索する。 */
list.set(list.indexOf(item), item);
}
/**
* @return total
*/
public static int getTotal() {
return total;
}
/**
* @param total
* セットする total
*/
public static void setTotal(int total) {
RecordManager.total = total;
}
}
fix.jsp
<body>
<form:form modelAttribute="salesForm" action="/sales/system">
<div class="header">
<span class="titleName">直太郎オンラインショップ</span>
<div class="date"><%=LocalDate.now()%></div>
</div>
<div class="main">
<br>
<div class="message3">
<font color="#1e90ff"> <c:out value="${message}" />
</font>
</div>
<br>
<div>
<span class="salesId">売上ID:</span>
</div>
<div>
<span class="details">売上明細</span>
<table class="product">
<tr>
<th>商品ID</th>
<th>商品名</th>
<th>単価</th>
<th>点数</th>
<th>小計</th>
</tr>
<c:forEach items="${allList}" var="allList" varStatus="status">
<tr>
<th class="id">${allList.id}</th>
<th class="nama">${allList.name}</th>
<th class="price">${allList.price}</th>
<th class="quantity">${allList.quantity}</th>
<th class="subtotal">${allList.subtotal}</th>
</tr>
</c:forEach>
</table>
</div>
<div class="total">
合計:
<c:out value="${total}" />
円
</div>
</div>
<div class="footer">
<input type="submit" name="end" value="終了" />
</div>
</form:form>
</body>
</html>
試したこと
/** 売上idの作成 */
public static void main(String[] args) {
long value = System.currentTimeMillis();
System.out.println(value);
}
をRecordManager.java で定義してみましたがSalesSystemController.javaで呼び出しても表示されませんでした。
補足情報(FW/ツールのバージョンなど)
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
0
public class TEST {
public static void main(String[] args) {
long value = System.currentTimeMillis();
System.out.println(value);
}
}
というプログラムを、TEST.javaというファイルに書き込んでおく。
コマンドプロンプトで以下のコマンドを実行して、コンパイルする。
javac TEST.java
続いて、以下のコマンドでコンパイルしたプログラムを実行する。
java TEST
そうすれば、コンソールに何らかの数字が表示されるはずです。
それが、1970年1月1日0時0分からの時間をミリ秒単位で表したものです。
(時間は、使っている計算機が持っているものに基づいていますから、正確な値が欲しければ、事前に時計合わせをしてください)
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
1970年1月1日0時0分からのミリ秒
「ミリ秒」がちょっと引っかかるんですが
キーワードは「UNIXTIME」または「EpochTime」
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.19%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
gentaro
2019/09/05 16:23
「売上Idを1970年1月1日0時0分からのミリ秒で表示する」という表現が全く理解できません。
長いコードを読んで意図を汲み取るのも困難なので、出したい結果の具体的な例と、現時点のコードを利用した場合の出力および問題点を正確に提示してください。
t.ikko
2019/09/06 10:32
> SalesSystemController.javaで呼び出しても表示されません
どうやって呼び出しましたか?
mainメソッドだから、ほかのクラスから呼び出さなくても、動かせるとおもうのですが。