How to test if this there is a genotypic effect or time effect or both? I have a timecourse RNASeq experiment for mutants and WT comparisons.
At  lfc = 2 , pval = 0.01 I have up regulated genes for genotypic comparisions ( e.g. Mut1_0h-WT_0h , Mut1_24h-WT_24h) and time compariions (e.g. WT24h_WT0h, Mut1_24h-Mut1_0h).
How can I test if this is genotypic effect or time effect or both etc.
 A: Since you have RNAseq, I would advice using DESeq2 or edgeR and modeling this using the negative binomial, as opposed to a gaussian. These packages also include measures for estimating the variance so it's better for detecting differentially expressed genes.
So using an example dataset from bioconductor:
library(fission) 
dataset("fission")
colData(fission)
DataFrame with 36 rows and 4 columns
             strain   minute replicate          id
           <factor> <factor>  <factor> <character>
GSM1368273       wt        0        r1     wt_0_r1
GSM1368274       wt        0        r2     wt_0_r2
GSM1368275       wt        0        r3     wt_0_r3
GSM1368276       wt       15        r1    wt_15_r1
GSM1368277       wt       15        r2    wt_15_r2
...             ...      ...       ...         ...
GSM1368304      mut      120        r2  mut_120_r2
GSM1368305      mut      120        r3  mut_120_r3
GSM1368306      mut      180        r1  mut_180_r1
GSM1368307      mut      180        r2  mut_180_r2
GSM1368308      mut      180        r3  mut_180_r3

We can use just the timepoints 120 and 180min, mut and wt, like what you have and set up the model:
sel = colData(fission)$minute %in% c(120,180)
library(DESeq2)
DF = droplevels(colData(fission)[sel,])
counts = assay(fission)[,sel]
counts = counts[rowMeans(counts)>30,]
dds = DESeqDataSetFromMatrix(counts,DF,~strain*minute)
dds = DESeq(dds)

To look at genes that have a significant strain (genotype) effect, you do:
res_strain = results(dds,contrast=c("strain","mut","wt"))
genes_strain = rownames(res_strain)[which(res_strain$padj < 0.05)]

Likewise for time effect you do:
res_time = results(dds,contrast=c("minute","180","120"))
genes_time = rownames(res_time)[which(res_time$padj < 0.05)]

For genes that are influenced by both time and strain, you can simply do the intersection of both.
We fitted an interaction, these will be genes that show only a strain (genotype) effect at a time:
res_timespecific = results(dds)
genes_timespecific = rownames(res_timespecific)[which(res_timespecific$padj < 0.05)]

We can look at one of the most significant gene for this:
sig = rownames(res_timespecific)[which.min(res_timespecific$padj)]
plotdf = data.frame(DF,counts=counts(dds,normalize=TRUE)[sig,])
ggplot(plotdf,aes(x=minute,y=log10(counts),col=strain)) +
geom_point(position=position_dodge2(0.3)) + 
stat_summary(fun.y="mean",geom="point",shape=45,
size=12,position=position_dodge2(0.3))

For example, the gene below has a stronger difference in expression at time 180 compared to 120.

A: It would help a lot if you could provide a reprex (reproducible example) of your data.
Also, this is more of a statistics question than a programming question so you might also do well to ask on Cross Validated.
However, in general, it sounds like you will need to use a mixed effects model. A simple case of that would be repeated measures ANOVA, however, there you are restricted to categorical fixed-effects predictors. A much better option is to fit proper mixed effects model with specialized mixed effects package, e.g. lme4, nlme, brms.
Personally, I'd recommend brms because it's Bayesian, flexible, easy to use, and awesome. It makes it very easy to fit, visualize, and check even pretty complicated models.
Anyway, here's how you would fit a simple mixed effects model in brms, predicting wt from gene and time and their interaction, with random slopes across your test subjects (id).
library(brms)

mod <- brm(wt ~ gene * time + (gene * time | id), data = your_data, family = gaussian())


You'd probably want to specify priors, etc..., but there's a lot of tutorials about how to do that if you google around a bit.
