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

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

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

Angularは、JavaScriptフレームワークです。AngularJSの後継であり、TypeScriptベースで実装されています。機能ごとに実装を分けやすく、コードの見通しが良いコンポーネント指向です。

Q&A

解決済

1回答

1261閲覧

Angular Material2を使用した際のTimeZone設定について

nekoneko96

総合スコア8

Angular

Angularは、JavaScriptフレームワークです。AngularJSの後継であり、TypeScriptベースで実装されています。機能ごとに実装を分けやすく、コードの見通しが良いコンポーネント指向です。

0グッド

0クリップ

投稿2018/05/17 09:52

編集2018/05/17 09:56

現在、Angular6.0.2、Angular Materialを用いてシステムを作成しています。

その中で、Angular MaterialのDatePickerについてハマってしまったのでお知恵を拝借できればと思い投稿しました。

使用しているDatePicker
https://material.angular.io/components/datepicker/overview

<form novalidate #frm="ngForm" [formGroup]="testForm" (ngSubmit)="onSubmit(frm.value)"> <mat-form-field> <input matInput [matDatepicker]="picker" placeholder="日付" formControlName="targetDate"> <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle> <mat-datepicker #picker></mat-datepicker> </mat-form-field> </form>

上記のようにDatePickerを定義していますが、Submitした際、frm.valueに含まれる「targetDate」の値が9時間前の値になってしまいます。

例)DatePickerで「2018/05/20」を選択すると、targetDateの値は「2018/05/19 15:00」となります。

恐らくタイムゾーンの設定が「ja」になっていないことが原因かと思われますが、どこで設定したらいいのかわからない状態です。

ModuleのProvider定義で下記のように設定してみましたが、カレンダーは日本表記になりますが、値は9時間前のままでした。

{ provide: MAT_DATE_LOCALE, useValue: 'ja', },

解決方法などわかる方がいらっしゃいましたらご教示頂ければと思います。

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

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

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

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

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

guest

回答1

0

ベストアンサー

Angular7で確認なのでバージョンが違いますが参考までに

0時になりますね。

  • app.module.ts

ts

1import { BrowserModule } from '@angular/platform-browser'; 2import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; 3import { NgModule } from '@angular/core'; 4 5import { AppRoutingModule } from './app-routing.module'; 6import { AppComponent } from './app.component'; 7import { MatDatepickerModule } from '@angular/material/datepicker'; 8import { MatFormFieldModule } from '@angular/material/form-field'; 9 10import { MatNativeDateModule, MatInputModule } from '@angular/material'; 11import { MAT_DATE_LOCALE } from '@angular/material/core'; 12import { FormsModule, ReactiveFormsModule } from '@angular/forms'; 13@NgModule({ 14 declarations: [ 15 AppComponent 16 ], 17 imports: [ 18 BrowserModule, BrowserAnimationsModule, FormsModule, ReactiveFormsModule, 19 AppRoutingModule, 20 MatDatepickerModule, MatFormFieldModule, MatNativeDateModule, MatInputModule 21 ], 22 providers: [ 23 { provide: MAT_DATE_LOCALE, useValue: 'ja' }, 24 ], 25 bootstrap: [AppComponent] 26}) 27export class AppModule { }
  • app.component.html

html

1<form novalidate #frm="ngForm" (ngSubmit)="onSubmit()" [formGroup]="testForm"> 2<mat-form-field > 3 <input matInput [matDatepicker]="picker" placeholder="Choose a date" (dateChange)="EndDateChange($event.value)" formControlName="targetDate"> 4 <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle> 5 <mat-datepicker #picker></mat-datepicker> 6</mat-form-field> 7<button>submit</button> 8</form>
  • app.component.ts

ts

1import { Component } from '@angular/core'; 2import { FormGroup, FormControl } from '@angular/forms'; 3 4@Component({ 5 selector: 'app-root', 6 templateUrl: './app.component.html', 7 styleUrls: ['./app.component.scss'] 8}) 9export class AppComponent { 10 title = 'datepicker'; 11 testForm = new FormGroup({ 12 targetDate : new FormControl('') 13 }); 14 15 onSubmit() { 16 console.log('stop'); // ← ここでデバックで止めて確認 17 } 18} 19

イメージ説明

投稿2019/03/12 02:47

mosapride

総合スコア1480

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問