所以我在 Xamarin Forms 中生成了一個 SQLite 資料庫。每個專案都有一個名稱和日期。我正在嘗試提取日期并將其設定為一個變數,以便在加載每個專案時,它將其日期整數轉換為 DateTime 并將其與 DateTime.Now 進行比較。我不知道該怎么做,而且我可能會遺漏一些非常基本的東西——我是一個完整的初學者。
public LivePage()
{
InitializeComponent();
LiveService.AddLive("2022年3月19日(土): ILLUSION FORCE presents「ILLUSION FORCE×GAUNTLET LONGSTAGE 'GACHINKO'2MAN GIG」", 20220319);
LiveService.AddLive("2022年3月20日(日)Phantom Excaliver presents 聖剣フェス」", 202203020);
LiveService.AddLive("2022年4月2日(土)Bad Company vol.17」", 20220402);
LiveService.AddLive("2022年4月10日(日)VELL'z FIRE presents", 20220410);
LiveService.AddLive("2022年4月10日(日)ILLUSION FORCE presents「ILLUSION FORCE×Amiliyah LONG STAGE 2MAN GIG」", 20220410);
LiveService.AddLive("2022年4月29日(金?祝)渋谷メタル會 presents 渋谷メタル會フェス 2022」", 20220429);
var Lists = LiveService.db.Table<Live>().ToList();
MainListView.ItemsSource = Lists;
int dateInt = Lists[2];
DateTime dater = Convert.ToDateTime(dateInt);
int result = DateTime.Compare(dater, DateTime.Now);
if (result < 0)
{
Label.TextDecorations = TextDecorations.Strikethrough;
}
我是如何創建表格的
namespace IF2.Models
{
public class Live
{
public string Name { get; set; }
public string Date { get; set; }
public string Place { get; set; }
public string Time { get; set; }
}
}
服務檔案
public static SQLiteConnection db;
static void Init()
{
if (db != null)
return;
// Get an absolute path to the database file
var databasePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Lives.db3");
db = new SQLiteConnection(databasePath);
db.DropTable<Live>();
db.CreateTable<Live>();
}
public static void AddLive(string name, string date)
{
Init();
var live = new Live
{
Name = name,
Date = date,
};
var id = db.Insert(live);
}
public static void GetProperties()
{
Init();
var Lists = db.Table<Live>().ToList();
}
}
}
uj5u.com熱心網友回復:
在您的代碼public static void AddLive(string name, string date)中,您將日期的型別設定為字串。
首先,嘗試獲取資料串列,因為表中不只有一行資料。
var stringlist = new List<string>()
// var intlist = new List<int>()
foreach(item in Lists)
{
var live = item as Live()
list.Add(live.Date)
//intlist.Add(int.Parse(live.Date))
}
立即獲取日期時間:
string nowTime = DateTime.Now.ToString("yyyyMMdd", DateTimeFormatInfo.InvariantInfo);
// and the value of the string will be like "20220322"
然后您可以將它們與“==”進行比較,例如:
var value = (nowTime == stringlist[i])
您也可以在foreach(item in Lists)和不需要的日期串列中比較它們。
創建一個模型類作為表。您需要給它一個主鍵和名為 table 的屬性。
[Table("Live")]
public class Live
{
[PrimaryKey, AutoIncrement]
public int Id { get; set; }
public string Name { get; set; }
public string Date { get; set; }
public string Place { get; set; }
public string Time { get; set; }
}
uj5u.com熱心網友回復:
對不起,我不得不洗掉我以前的評論。我誤認為 SQLite 能夠將日期資料轉換為DateTime物件。因此,我可以拋出一個簡單的決議器來轉換string日期資料的值。
如果資料不正確,則回傳今天的日期,但是您可以回傳任何日期。你可以像……一樣使用它
DateTime dater = GetDTFromString(dateInt.ToString());
決議器...
private DateTime GetDTFromString(string dateString) {
if (dateString.Length >= 8) {
string year = dateString.Substring(0, 4);
string month = dateString.Substring(4, 2);
string day = dateString.Substring(6, 2);
if (DateTime.TryParse(year "," month "," day, out DateTime targetDate)) {
return targetDate;
}
}
return DateTime.Now;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/449251.html
下一篇:設備重啟后本地通知不顯示
