2017-12-17 21 views
0

私はこのような文字列のリストのリストを持っています:'17/12/2017 19:34'。彼らはCETの日付です。CETタイムゾーンからユーザのタイムゾーン

どうすればユーザーのブラウザの日付に変換できますか?

は、私はこれをやっている:

const tzGuess = moment.tz.guess() 

export const toTimeZone = (time) => { 
    const format = 'DD/MM/YYYY HH:mm' 
    return moment(time, format).tz(tzGuess).format(format) 
} 

console.log(toTimeZone('17/12/2017 19:34', tzGuess)) 

が、私は私が最初に渡している日付はCET一つであることmomentに言うことができますか?

ありがとうございます!

答えて

1

moment.tz関数を使用すると、指定したタイムゾーン(たとえば、'Europe/Madrid')を使用して時間文字列を解析することができます。

問題は:CETではどういう意味ですか?あなたの入力がUTC + 1オフセット(中央ヨーロッパ時間のような)を固定していれば、RobGのソリューションを使うことができます。 CETとCESTの両方を考慮する必要がある場合は、moment.tzを使用するのが最良の方法だと思います。ここで

ライブコードサンプル:

const tzGuess = moment.tz.guess() 
 

 
const toTimeZone = (time) => { 
 
    const format = 'DD/MM/YYYY HH:mm' 
 
    return moment.tz(time, format, 'Europe/Madrid').tz(tzGuess).format(format) 
 
} 
 

 
console.log(toTimeZone('17/12/2017 19:34', tzGuess))
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.19.4/moment.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.13/moment-timezone-with-data-2012-2022.min.js"></script>

タイムゾーンについての素晴らしいリソースがtimezone tag info pageです。

+1

これは完璧です。ありがとう! –

+0

マドリードは、3月末から10月末までの夏時間(CEST)を観測します。 OPはCETだけを望んでいるようだ。 – RobG

1

moment.jsを指定しない場合は、文字列を解析してUTCとして扱い、CETオフセット(+0100)を調整します。あなたは、クライアントのローカル時間値を使用して、それをフォーマットすることができます。

// Parse date in format DD/MM/YYYY HH:mm 
 
// Adjust for CET timezone 
 
function parseCET(s) { 
 
    var b = s.split(/\D/); 
 
    // Subtract 1 from month and hour 
 
    var d = new Date(Date.UTC(b[2], b[1]-1, b[0], b[3]-1, b[4])); 
 
    return d; 
 
} 
 

 
var s = '17/12/2017 19:34'; 
 
console.log(parseCET(s).toString());

しかし、時間はあなたがする必要があります、元のタイムスタンプのための夏時間(CEST)を観察する必要がある場合それを説明する。

関連する問題