Як представити DateTime в Excel


78

Який найкращий спосіб представити a DateTimeв Excel? Ми використовуємо Syncfusions Essential XlsIO для виведення значень у документ Excel, який чудово працює. Але я не можу зрозуміти, як відображати a DateTimeу стовпці. Не тоді, коли я роблю це безпосередньо в Excel. Це неможливо? Чи потрібно використовувати окремий стовпець дати та часу? Я б дуже хотів, щоб цього не зробив, спричиняючи це як би перервами, сортуванням тощо ... хіба що в Excel щось розумне відбувається, щоб це виправити ...

Відповіді:


84

Основним типом даних дати і часу в Excel є 64-розрядне число з плаваючою точкою, де тривалість дня дорівнює 1і 1st Jan 1900 00:00дорівнює 1. Так 11th June 2009 17:30само про 39975.72917.

Якщо комірка містить числове значення, подібне до цього, її можна перетворити на дату-час, просто застосувавши до комірки формат дати-часу.

Отже, якщо ви можете перетворити свої дати в цифри, використовуючи наведену вище формулу, виведіть їх у відповідні комірки, а потім встановіть формати комірок у відповідний формат дати та часу, наприклад yyyy-mm-dd hh:mm:ss, тоді має бути можливо досягти того, що ви хочете.

Також Штефан де Бруйн зазначив, що в програмі Excel є помилка, оскільки вона неправильно вважає, що 1900 рік є високосним, тому вам потрібно це враховувати під час розрахунків ( Вікіпедія ).


10
На жаль, це неправильно. Якщо клітинка A2 = 1-1-1900 і ви вводите значення (A2), ви отримуєте '1'. Крім того, Excel неправильно припускає, що 1900 рік є високосним (за всіма розрахунками). Іншими словами, вам, мабуть, потрібно відняти 2 дні, щоб отримати правильну дату під час роботи улюбленою мовою програмування ...
atlaste

Дякую Стефану де Бруйне, я виправив відповідь і додав примітку про помилку високосного року.
Адам Ральф

3
Будьте обережні, формат дати та часу залежить від мови Excel. Наприклад, іспанською мовою має бути: aaaa-mm-dd hh: mm
Daniel Argüelles

64

Якщо, як і я, ви не можете знайти дату під датою чи часом у діалоговому вікні формату, ви зможете знайти її в "Спеціальному".

Я щойно вибрав "dd / mm / yyyy hh: mm" із "Custom" і задоволений результатами.


Вищезазначене не працює для Excel для Mac :(
Брантлі Бірд

1
@BrantleyBeaird У мене немає Mac, але чи не можете ви ввести "dd / mm / yyyy hh: mm" у спеціальний рядок? Знімок екрана: imgur.com/a/51ipd
Ian Grainger

1
Я зробив це, а потім додав ": ss", щоб включити секунди.
Джеймс в Інді

25

Ви можете зробити наступне:

=Datevalue(text)+timevalue(text) .

Перейдіть до різних типів форматів дат і виберіть:

dd-mm-yyyy mm:ss am/pm .


2
Чому потрібно робити Datevalue (текст) + timevalue (текст)? Просто встановіть форматування в комірці.
Ian Grainger

11

Деякі версії Excel не мають форматів дати та часу, доступних у стандартних списках вибору, але ви можете просто ввести рядок користувацького формату, такий як рррр-мм-дд год: мм: сс від:

  1. Клацніть правою кнопкою миші -> Форматувати комірки
  2. Вкладка номер
  3. Виберіть категорію Спеціально
  4. Введіть рядок власного формату в поле "Тип"

Це працює на моєму Excel 2010


Я вже сказав це у відповіді - stackoverflow.com/a/15552944/48348 ...
Ian Grainger

2

Excel може відображати тип дати аналогічно DateTime. Клацніть правою кнопкою миші на відповідній комірці, виберіть Форматувати клітинки , потім у розділі Категорія виберіть Дату, а в розділі Тип виберіть тип, який виглядає приблизно так:

3/14/01 1:30 PM

Це має зробити те, що ви просили. Я протестував сортування на деяких зразках даних у цьому форматі, і, здавалося, це працює нормально.


Це насправді так ... чи знаєте ви, чи можливо встановити це специфічно для культури з C #? Чи працюють у Excel стандартні рядки формату DateTime із .NET?
Свіш

Якщо дані експортуються з .NET до Excel у вигляді рядка, і це схоже на мій приклад, це має спрацювати під час форматування комірок. Що стосується специфіки культури (?), Існує маса користувацьких форматів (тобто категорія є спеціальною в Excel), яка може надати те, що ви шукаєте.
Метью Джонс,

7
У моїй версії Excel (2003) немає параметра дати з часом
Девід Сайкс

Якщо ваша версія Excel не постачається зі стандартним форматом дати та часу, ви можете ввести її як власне поле, як це пояснено в моїй відповіді нижче.
Гленн Лоуренс,

У мене є це в Excel 2013, але спочатку мені довелося вибрати "English (United States)" у полі Locale під розділом Type.
Дон Круікшенк,

1

Excel очікує, що дати та час зберігатимуться як число з плаваючою комою, значення якого залежить від налаштування дати у книзі Date1904, а також числовий формат, наприклад "мм / дд / рррр" або "чч: мм: сс" або "мм / дд / рррр чч: мм: сс ", щоб номер відображався користувачеві як дата / час.

За допомогою SpreadsheetGear для .NET ви можете зробити це: worksheet.Cells ["A1"]. Value = DateTime.Now;

Це перетворить DateTime на подвійний, що є основним типом, який Excel використовує для дати / часу, а потім автоматично відформатує комірку у форматі дати та / або часу за замовчуванням автоматично залежно від значення.

SpreadsheetGear також має методи IWorkbook.DateTimeToNumber (DateTime) і NumberToDateTime (double), які перетворюють із .NET DateTime об'єктів на подвійні, які Excel може використовувати.

Я би очікував, що XlsIO матиме щось подібне.

Застереження: Я є власником SpreadsheetGear LLC


1

Ви можете встановити значення дати та часу для комірки в XlsIO, використовуючи один із цих параметрів

sheet.Range["A1"].Value2 = DateTime.Now;
sheet.Range["A1"].NumberFormat = "dd/mm/yyyy";

sheet.Range["A2"].DateTime = DateTime.Now;
sheet.Range["A2"].NumberFormat = "[$-409]d-mmm-yy;@";

Ви можете знайти більше інформації тут .


Посилання (для останніх документів) help.syncfusion.com/ug_94/Reporting/XlsIO/ASP.NET/…
Томас Лундстрем

-2

дд-мм-рррр год: мм: сс.000 Універсальний сортуваний шаблон дати / часу


7
Ви насправді маєте на увазі yyyy-mm-dd hh:mm:ss.000? Існує також подібний формат ISO8601: YYYY-MM-DDThh:mm:ssTZD(Обмеження цих параметрів є, хоча і сортуються , але вони все ще є рядками, тому ви не можете застосувати до них функції дати Excel)
dule

Так, ви праві, і з великим форматом HH до 24 годин. рррр-мм-дд ЧЧ: мм: сс.000
Гліб

2
Проголосував проти, бо я не думаю, що це дуже повно або правильно, як відповідь, вибачте.
Ian Grainger

1
Це не можна сортувати чи універсально. Вам потрібно поставити рік першим для обох.
Джейсон Вуф,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.