CSVファイルを作成しています。少なくとも秒単位、できればミリ秒単位で正確なタイムスタンプを書き込む必要があります。ユーザーが最小限の操作でExcelによってタイムスタンプを正確かつ明確に解析できるように、CSVファイルのタイムスタンプに最適な形式は何ですか?
CSVファイルを作成しています。少なくとも秒単位、できればミリ秒単位で正確なタイムスタンプを書き込む必要があります。ユーザーが最小限の操作でExcelによってタイムスタンプを正確かつ明確に解析できるように、CSVファイルのタイムスタンプに最適な形式は何ですか?
回答:
2番目の精度については、yyyy-MM-dd HH:mm:ssが適切です。
Excelは、ほんの一瞬ではあまり良くない(COMオブジェクトIIRCと対話すると失われる)と思います。
strftime
場合、同等の引数文字列は"%Y-%m-%d %H:%M:%S"
.CSV
は単なるテキストファイルです。タイムゾーンなど、ファイルに書き込むものはすべてカンマ区切りのプレーンテキストとして表示できます。重要なのは、どのアプリケーションがそれを読み取るか、そしてそのアプリケーションがテキストをどのように期待するかです。 米国議会図書館のCSV標準のドキュメントを以下に示します。日付を明確に保存するための規定された方法はありません。また、RFC-4180およびCSV-1203 //creativyst.com/Doc/Articles/CSV/CSV01.htm)。
"%Y-%m-%d %H:%M:%S"
Rubyと同じになります。
「yyyy-MM-dd HH:mm:ss」を使用するという以前の提案は問題ありませんが、Excelはそれよりもはるかに細かい時間分解能を持っていると思います。私はこの投稿がかなり信頼できると思います(スレッドをたどると、多くの算術演算とExcelの実験が表示されます)。それが正しければ、ミリ秒になります。末尾の小数点以下の桁、つまり「yyyy-mm-dd hh:mm:ss.000」を追加するだけです。
Excelは、必ずしもすべての精度が表示されるような方法で(人の介入なしに)データをフォーマットするわけではないことに注意してください。職場のコンピューターで、「yyyy-mm-dd hh:mm:ss.000」データを含むCSVを(手動でメモ帳を使用して)セットアップすると、セルに「mm:ss.0」が表示され、「m / d / yyyy hh:mm:ss AM / PM」を数式バーに入力します。
人の介入なしにセルで伝達される最大の情報[1]については、タイムスタンプを日付部分と時間部分に分割し、時間部分を秒にのみ分割することができます。Excelは、任意のセルで最大3つの表示可能な「レベル」(1秒の端数は独自のレベル)を提供する必要があり、7つが必要であるように見えます:年、月、日、時間、分、秒、そして秒の端数。
または、タイムスタンプを人間が読めるようにする必要はないが、できるだけ正確にしたい場合は、大きな数値を格納することをお勧めします(内部的に、Excelは端数日を含む日数のみを使用しています) 、「エポック」日付以降)。
[1]つまり、数値情報。できるだけ多くの情報を表示したいが、それを使用して計算を行う必要がない場合は、Excelが文字列として確実に解析する形式を作成して、そのままにすることができます。例:「yyyymmdd.hhmmss.000」。
「yyyy-MM-dd hh:mm:ss.000」形式は、すべてのロケールで機能するわけではありません。一部の(少なくともデンマーク語)の場合、「yyyy-MM-dd hh:mm:ss、000」の方が適切に機能します。
あなたが使用した場合 double
データ型、Excelでの再計算。
「yyyy-mm-dd hh:mm:ss.000」形式は、すべてのロケールで機能するわけではありません。一部の(少なくともデンマーク語)の場合、「yyyy-mm-dd hh:mm:ss、000」の方が適切に機能します。
user662894から返信されたとおり。
追加したいのは、たとえばSQL Serverのdatetime2データ型からマイクロ秒を取得しようとしないことです。Excelでは、3秒未満の小数秒(つまり、ミリ秒)を処理できません。
したがって、「yyyy-mm-dd hh:mm:ss.000000」は機能せず、Excelにこのような文字列(CSVファイルから)が渡されると、切り捨てではなく丸めが実行されます。
マイクロ秒の精度が重要な場合を除いて、これは問題ないかもしれません。その場合は、自動データ型認識をトリガーせず、文字列を文字列として保持するほうがよいでしょう...
私はそれを推測ISO-形式は良いアイデアです。(ウィキペディアの記事、時間情報も含む)
MM / dd / yyyy hh:mm:ssという形式を試してください。
XMLファイルを作成するJavaコード。
xmlResponse.append( "mydate>")。append(this.formatDate(resultSet.getTimestamp( "date")、 "MM / dd / yyyy hh:mm:ss a"))。append( "");
public String formatDate(Date date, String format)
{
String dateString = "";
if(null != date)
{
SimpleDateFormat dateFormat = new SimpleDateFormat(format);
dateString = dateFormat.format(date);
}
return dateString;
}
したがって、奇妙なことに、Excelはcsv日付をさまざまな方法でインポートします。また、csvファイルで使用される形式に応じて、それらを異なる方法で表示します。残念ながら、ISO 8061形式は文字列として提供されます。これにより、日付を自分で再フォーマットすることができなくなります。
日付として入ってくるものはすべて...すべての情報が含まれています...しかし、形式は異なります...気に入らない場合は、Excelで列の新しい形式を選択でき、機能します。(注:正当な理由があるため、有効な日付/時刻として受け取ったことがわかります...文字列として受け取った場合、左揃えになります)
ここに私がテストしたフォーマットがあります:
"yyyy-MM-dd"は、Excelで開いたときにコースの日付として表示されます。(「MM / dd / yyyy」も機能します)
「yyyy-MM-dd HH:mm:ss」のデフォルトの表示形式は「MM / dd / yyyy HH:mm」(日付と時刻w / out秒)
"yyyy-MM-dd HH:mm:ss.fff"デフォルトの表示形式は "HH:mm:ss"(時間のみw /秒)
次の形式の日時列を含むcsvファイルがあるとします:yyyy-mm-dd hh:mm:ss
Excelは次の形式で表示します:dd / mm / yyyy hh:mm
例:2020-05-22 16:40:55は22/05/2020 16:40と表示されます
これは明らかに、Windowsで選択された短い日付と短い時間の形式によって決定されます。たとえば、Windowsの短い日付形式をyyyy-mm-ddに変更すると、Excelに2020-05-22 16:40と表示されます。
厄介なことに、Excelで秒を自動的に表示する方法を見つけることができません(Excelで列を手動でフォーマットする必要があります)。ただし、csvファイルにhh:mm:ss形式(16:40:55など)の時間列が含まれている場合、Excelに表示されるのは秒も含まれます。