C++

2016-03-30 19 views
-3

'u kullanarak herhangi bir tarih saat dizesi biçimini ABD tarih saatine dönüştürün C++ biçimini kullanarak herhangi bir tarih saat dizesi biçimini ABD tarih saatine değiştirin Örnek biçim 1: dddd, dd MMMM, yyyy s: dd: ss tt biçimi 2: AAAA yyyy h dd: dd: ss tt biçiminde 3: dd: SS de aA/aA/yYYY ssC++

biçimi aşağıda verilen biçim dddd, AAAA dd dönüştürülen ve baskılı almak gerekir yukarıda yyyy h: mm: ss tt (bu, ABD saat formatıdır)

+1

Bize neyi denediğini göster –

+0

hey şu anda el ile dönüştürüyorum ve DB – MTV

+0

içine yerleştiriyorum sanırım epoc zaman dönüştürücü de iyi bir çözüm olabilir. ama birden fazla datetime formatı olduğunda o zaman nasıl yürütürüm? – MTV

cevap

1

Tüm örnek biçimler farklı olduğundan (örneğin, virgül, boşluk veya eğik çizgi oluşumu), biçime özgü karakterler için kontrol ederek e girdi biçimi: fonksiyonlar handleFormat istediğiniz çıkış biçimi giriş biçiminden dönüşüm yapacağını

std::string inputDate = "Wed, 31 Mar, 2016 10:28:00"; 
if (inputDate.find(",") < std::string::npos) handleFormat1(); 
else if (inputData.find("/") < std::string::npos) handleFormat3(); 
else handleFormat2(); 

. Tabii ki, eğer daha fazla sayıda girdi formatıyla uğraşmak zorunda kalırsanız, doğru formatı veya günleri, ayları, yılları ve zamanları belirlemek daha karmaşık olacaktır. Ancak bunu manuel olarak yapabileceğinizden, mümkün olan tüm formatlar için bunu belirlemek de mümkün olmalıdır.

+0

genel olarak 71 biçimindedir ve her bir formatta koşulu koymak çok zor olurdu – MTV

+0

Bu doğrudur. Ama o problemin basit bir çözümü olduğunu düşünmüyorum (başka biri zaten çözmediyse ....). Belki de ilk önce dizeyi sayılara, ay/ay adlarına ve ayırıcılara bölmeyi deneyebilirsiniz. Bir sonraki adımda, farklı sayıların anlamını anlamaya çalışabilirsiniz (örneğin, sadece yıl 4 haneli, günler her zaman 31'den küçük, ...). – AchimGuetlein