У меня странный формат даты в некоторых файлах, которые я анализирую. Вот несколько примеров:
1954203 2012320 2010270
Первые четыре цифры - это год, а следующие три цифры - день года. Например, первой датой является 203-й день 1954 года или 7/22/1954.
Мои вопросы:
Редактировать: Извините, я забыл упомянуть мой язык. PHP.
Попробуйте:
$oDate = DateTime::createFromFormat('Yz', 201026); echo $oDate->format('Y-m-d');
Оказывается, что я хотел, было это:
$date = '1954203'; $year = substr($date, 0, 4); $day = substr($date, 4, 3); $new_date = date("Y-m-d", mktime(1, 1, 1, 1, $day, $year));
Предполагая, что вы получите его в виде строки в C # ...
DateTime GetDate(string input) { int year = Int32.Parse(input.Substring(0,4)); int day = Int32.Parse(input.Substring(4,3)); return (new DateTime(year,1,1)).AddDays(day - 1); }
(обратите внимание на смещение -1 для номера дня, поскольку вы уже начинаете с первого дня)
В PHP для форматирования даты:
echo date_parse_from_format("Yz", $date);
Вы также можете использовать
DateTime::createFromFormat("YZ", $date);
или его псевдоним
date_create_from_format("Yz", $date)
, который возвращает DateTime объект
Для Java см. SimpleDateFormat . Вы хотите yyyyDDD в качестве формата (год, затем день в году).